My problem:我有一个superview EditView
,它基本上占据了整个应用程序框架,还有一个子视图MenuView
,它只占底部的20%,然后MenuView
包含它自己的子视图ButtonView
,它实际上位于MenuView
的边界之外(类似于:ButtonView.frame.origin.y = -100
).
(注意:EditView
有其他子视图,这些子视图不属于MenuView
的视图层次 struct ,但可能会影响答案.)
你可能已经知道这个问题了:当ButtonView
在MenuView
的范围内(或者更具体地说,当我的touch 在MenuView
的范围内时),ButtonView
会响应touch 事件.当我的touch 超出MenuView
的界限(但仍在ButtonView
的界限内)时,ButtonView
不会收到任何touch 事件.
Example:个
- (E) 是
EditView
,是所有视图的父视图 - (M)为
MenuView
,为EditView的子视图 - (B)为
ButtonView
,为MenuView的子视图
Diagram:个
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
因为(B)在(M)的框之外,所以(B)区域中的轻击将永远不会被发送到(M)-事实上,(M)在这种情况下从不分析touch ,并且touch 被发送到层次中的下一个对象.
Goal:我想凌驾于hitTest:withEvent:
之上可以解决这个问题,但我不知props 体是怎么解决的.在我的例子中,应该在EditView
(我的"主"SuperView)中重写hitTest:withEvent:
吗?或者它应该在MenuView
中被覆盖,MenuView
是不接受touch 的按钮的直接SuperView?还是我想错了?
如果这需要一个冗长的解释,一个好的在线资源会很有帮助——除了苹果的UIView文档,它没有向我明确说明.
谢谢