调用另一个对象';s触摸开始iOS

调用另一个对象';s触摸开始iOS,ios,uiview,uitouch,Ios,Uiview,Uitouch,假设我有截取触摸事件的view1和不截取触摸事件的view2 view1能否将这些事件传递给view2并调用[view2 touchesBegin][view2 touchesMoved]……等等?是的,有时可能。您所询问的技术称为事件转发。我将向您介绍本手册的一节,其中说明了以下内容: UIKit框架的类不是为接收触摸而设计的 不受他们约束的;在程序方面,这意味着 UITouch对象的view属性必须包含对 框架对象,以便处理触摸。如果你想 有条件地向应用程序中的其他响应者转发接触, 所有这些

假设我有截取触摸事件的view1和不截取触摸事件的view2


view1能否将这些事件传递给view2并调用[view2 touchesBegin][view2 touchesMoved]……等等?

是的,有时可能。您所询问的技术称为事件转发。我将向您介绍本手册的一节,其中说明了以下内容:

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

因此,如果您希望将事件从一个视图转发到另一个视图,并且两个视图都是您自己的UIView子类的实例,那么事件转发可能适合您。但是,如果您的
view2
是UIKit类的一个实例,比如说UIScrollView或UITextView,那么遇到问题就不会感到惊讶。即使它现在起作用,将来也很容易崩溃。在文本中,该部分更简单地说明了这一点:

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


我建议您阅读整个部分——如果您决定使用事件转发,这里有一些很好的建议和示例可能会有所帮助。

您尝试过吗?我的直觉反应是它会起作用,但很容易导致意想不到的结果。刚刚找到你的答案,Forward Touch Events链接已移至:@MikeD感谢你指出这一点。我更新了链接,但苹果仍试图将其重定向到一个不太有用的页面。