Ios 为什么兄弟视图在视觉上落后于其他兄弟视图,首先接收触摸事件?
我有一个比较复杂的视图层次结构。我遇到的问题是,我有几个视图是兄弟视图,这些视图可以在屏幕上移动。每当一个视图被移动时,我的代码都会对它进行一些子视图重新排序,以便它在视觉上位于所有其他同级视图之上 我的问题是,当一个视图在视觉上位于另一个视图的顶部时,它下面的视图实际上首先接收触摸。有人知道什么会导致这样的行为吗?也许有人经历过类似的问题Ios 为什么兄弟视图在视觉上落后于其他兄弟视图,首先接收触摸事件?,ios,uiview,siblings,uiview-hierarchy,Ios,Uiview,Siblings,Uiview Hierarchy,我有一个比较复杂的视图层次结构。我遇到的问题是,我有几个视图是兄弟视图,这些视图可以在屏幕上移动。每当一个视图被移动时,我的代码都会对它进行一些子视图重新排序,以便它在视觉上位于所有其他同级视图之上 我的问题是,当一个视图在视觉上位于另一个视图的顶部时,它下面的视图实际上首先接收触摸。有人知道什么会导致这样的行为吗?也许有人经历过类似的问题 提前感谢,据我所知,这些视图的superview的hitTest只是在其子视图数组中迭代,并选择第一个响应为非nil的数组。前面在子视图列表中排序的视图将首
提前感谢,据我所知,这些视图的superview的
hitTest
只是在其子视图
数组中迭代,并选择第一个响应为非nil的数组。前面在子视图列表中排序的视图将首先绘制,这意味着它们将在其他视图下方可见。好的,我刚刚解决了这个问题,所以我将回答我自己的问题,以防其他人偶然发现这个问题
这里的问题原来与我的一个超级视图有关,这些兄弟姐妹坐在其中。此superview覆盖了hitTest:方法,并按正向顺序在其子视图上循环。Apple明确指出hitTest:方法应该以相反的顺序遍历其子视图。因此,更新循环以按相反顺序运行修复了问题
按相反顺序进行的原因很简单。每次添加子视图时,都会将其添加到子视图数组的末尾,并直观地放置在所有其他子视图的顶部。所以屏幕上最前面的视图是子视图数组中的最后一个视图,这就是为什么需要按相反的顺序进行
希望这能帮助其他遇到这种行为的人。如果您更改视图层的位置,这种情况可能会发生