【问题标题】:Order of addSubview messages affects buttons responding to the UIControlEventTouchUpInsideaddSubview 消息的顺序会影响响应 UIControlEventTouchUpInside 的按钮
【发布时间】:2013-09-11 12:58:26
【问题描述】:

我有两个视图,其中一个包含一个按钮:

UIView *view1, *view2;
UIButton *button;
[view1 addSubview:button];

它们都在父视图的顶部,view2 在顶部(具有更大的 zPosition 值):

UIView *parentView;
view1.layer.zPosition = 10;
view2.layer.zPosition = 0;
[parentView addSubview:view1];
[parentView addSubview:view2];

仅当我按此顺序添加子视图时(首先是视图 1,其次是视图 2),我的按钮(在视图 1 内)不会响应 UIControlEventTouchUpInside 事件。 当我颠倒顺序时,一切正常:

[parentView addSubview:view2];
[parentView addSubview:view1];

虽然 UIControlEventTouchUpInside 事件不起作用,但即使在第一种情况下(视图 1 显示在视图 2 的顶部),视觉上也一切正常。 addSubview 消息的顺序只影响 UIControlEventTouchUpInside 事件。

添加: 我的问题是:为什么只有一种描述的方式起作用?

【问题讨论】:

    标签: objective-c uiview uibutton uikit


    【解决方案1】:

    正确的方法是第二种

    [parentView addSubview:view2];
    [parentView addSubview:view1];
    

    或者

    [parentView addSubview:view2];
    [view2 addSubview:view1];
    

    但是,通过这样做:

    view1.layer.zPosition = 10;
    view2.layer.zPosition = 0;
    

    您只修改了“可视层”,这样view1将保留在view2下方

    【讨论】:

    • 在 view2 已经添加到第二个父视图之后,我可以将 view1 放在 view2 上吗?
    • 当然,你可以.. 但它会从父视图中删除并添加到另一个视图中
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2013-06-26
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多