调用另一个对象的触摸开始iOS

时间:2011-12-02 22:05:53

标签: ios uiview uitouch

假设我有view1拦截触摸事件而view2则没有。

view1可以将这些事件传递给view2并调用[view2 touchesBegin] [view2 touchesMoved] ......等等吗?

1 个答案:

答案 0 :(得分:5)

是的,有时候,也许吧。您询问的技术称为事件转发。我会引荐您转到Forwarding Touch EventsEvent Handling Guide for iOS部分,该部分说明如下:

  

UIKit框架的类不是为接收触摸而设计的   不受他们约束的;在程序方面,这意味着   UITouch对象的view属性必须包含对该引用的引用   框架对象,以便处理触摸。如果你想   有条件地向您的申请中的其他响应者转发,   所有这些响应者都应该是你自己的子类的实例   的UIView。

因此,如果您希望将事件从一个视图转发到另一个视图,并且两个视图都是您自己的UIView子类的实例,则事件转发可能对您有用。如果你的view2是UIKit类的一个实例,比如UIScrollView或UITextView,你不应该对遇到问题感到惊讶。即使它现在有效,它也可能在未来很容易打破。在文中稍微进一步说明,该部分更简单地说明了这一点:

  

不要将事件转发给UIKit框架对象。

我建议您阅读整个部分 - 如果您决定使用事件转发,那么可以提供一些好的建议和示例。