假设我有view1拦截触摸事件而view2则没有。
view1可以将这些事件传递给view2并调用[view2 touchesBegin] [view2 touchesMoved] ......等等吗?
答案 0 :(得分:5)
是的,有时候,也许吧。您询问的技术称为事件转发。我会引荐您转到Forwarding Touch Events的Event Handling Guide for iOS部分,该部分说明如下:
UIKit框架的类不是为接收触摸而设计的 不受他们约束的;在程序方面,这意味着 UITouch对象的view属性必须包含对该引用的引用 框架对象,以便处理触摸。如果你想 有条件地向您的申请中的其他响应者转发, 所有这些响应者都应该是你自己的子类的实例 的UIView。
因此,如果您希望将事件从一个视图转发到另一个视图,并且两个视图都是您自己的UIView子类的实例,则事件转发可能对您有用。如果你的view2
是UIKit类的一个实例,比如UIScrollView或UITextView,你不应该对遇到问题感到惊讶。即使它现在有效,它也可能在未来很容易打破。在文中稍微进一步说明,该部分更简单地说明了这一点:
不要将事件转发给UIKit框架对象。
我建议您阅读整个部分 - 如果您决定使用事件转发,那么可以提供一些好的建议和示例。