0

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

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 事件不起作用,但即使在第一种情况下(view1 显示在 view2 的顶部),视觉上也一切正常。addSubview 消息的顺序仅影响 UIControlEventTouchUpInside 事件。

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

4

1 回答 1

1

正确的方法是第二种

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

或者

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

但是,通过这样做:

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

您只修改了“视觉层”,这样 view1 将保持在 view2 下面

于 2013-09-11T13:46:38.523 回答