相关疑难解决方法(0)

使用hitTest:withEvent捕获其超级视图框架外的子视图的触摸:

我的问题:我有一个超级视图EditView,基本上占用整个应用程序框架,子视图MenuView只占用底部〜20%,然后MenuView包含它自己的子视图ButtonView,它实际上位于MenuView边界之外(类似这样:) ButtonView.frame.origin.y = -100.

(注意:EditView其他子视图不属于MenuView视图层次结构,但可能会影响答案.)

您可能已经知道了这个问题:何时ButtonViewMenuView(或者更具体地说,当我的触摸在MenuView范围内)时,ButtonView响应触摸事件.当我的触摸超出MenuView界限(但仍然在ButtonView界限内)时,不会收到任何触摸事件ButtonView.

例:

  • (E)是EditView所有观点的父母
  • (M)是MenuViewEditView的子视图
  • (B)是ButtonViewMenuView的子视图

图:

+------------------------------+
|E                             |
|                              |
|                              |
|                              |
|                              |
|+-----+                       |
||B    |                       |
|+-----+                       |
|+----------------------------+|
||M                           ||
||                            ||
|+----------------------------+|
+------------------------------+
Run Code Online (Sandbox Code Playgroud)

因为(B)在(M)的框架之外,(B)区域中的抽头将永远不会被发送到(M) - 实际上,(M)在这种情况下从不分析触摸,并且触摸被发送到层次结构中的下一个对象.

目标:我认为压倒一切hitTest:withEvent:可以解决这个问题,但我不明白究竟是怎么回事.在我的情况下,应该hitTest:withEvent: …

objective-c ios uiview-hierarchy

91
推荐指数
3
解决办法
3万
查看次数

标签 统计

ios ×1

objective-c ×1

uiview-hierarchy ×1