Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么兄弟视图在视觉上落后于其他兄弟视图,首先接收触摸事件?_Ios_Uiview_Siblings_Uiview Hierarchy - Fatal编程技术网

Ios 为什么兄弟视图在视觉上落后于其他兄弟视图,首先接收触摸事件?

Ios 为什么兄弟视图在视觉上落后于其他兄弟视图,首先接收触摸事件?,ios,uiview,siblings,uiview-hierarchy,Ios,Uiview,Siblings,Uiview Hierarchy,我有一个比较复杂的视图层次结构。我遇到的问题是,我有几个视图是兄弟视图,这些视图可以在屏幕上移动。每当一个视图被移动时,我的代码都会对它进行一些子视图重新排序,以便它在视觉上位于所有其他同级视图之上 我的问题是,当一个视图在视觉上位于另一个视图的顶部时,它下面的视图实际上首先接收触摸。有人知道什么会导致这样的行为吗?也许有人经历过类似的问题 提前感谢,据我所知,这些视图的superview的hitTest只是在其子视图数组中迭代,并选择第一个响应为非nil的数组。前面在子视图列表中排序的视图将首

我有一个比较复杂的视图层次结构。我遇到的问题是,我有几个视图是兄弟视图,这些视图可以在屏幕上移动。每当一个视图被移动时,我的代码都会对它进行一些子视图重新排序,以便它在视觉上位于所有其他同级视图之上

我的问题是,当一个视图在视觉上位于另一个视图的顶部时,它下面的视图实际上首先接收触摸。有人知道什么会导致这样的行为吗?也许有人经历过类似的问题


提前感谢,

据我所知,这些视图的superview的
hitTest
只是在其
子视图
数组中迭代,并选择第一个响应为非
nil的数组。前面在
子视图列表中排序的视图将首先绘制,这意味着它们将在其他视图下方可见。

好的,我刚刚解决了这个问题,所以我将回答我自己的问题,以防其他人偶然发现这个问题

这里的问题原来与我的一个超级视图有关,这些兄弟姐妹坐在其中。此superview覆盖了hitTest:方法,并按正向顺序在其子视图上循环。Apple明确指出hitTest:方法应该以相反的顺序遍历其子视图。因此,更新循环以按相反顺序运行修复了问题

按相反顺序进行的原因很简单。每次添加子视图时,都会将其添加到子视图数组的末尾,并直观地放置在所有其他子视图的顶部。所以屏幕上最前面的视图是子视图数组中的最后一个视图,这就是为什么需要按相反的顺序进行


希望这能帮助其他遇到这种行为的人。

如果您更改视图层的位置,这种情况可能会发生