在Subview或ViewController中处理触摸事件逻辑

时间:2010-08-30 17:08:31

标签: objective-c cocoa-touch uikit uiviewcontroller

我有一系列UIView子类,它们被添加为子视图。可以拖放每个子视图。当它们被删除(touchesEnded)时,我需要在viewController中运行一个方法来做一些工作。我目前在每个子视图类中处理了touchEvents。我应该在viewController中处理这些触摸事件,还是应该将指向父viewController的指针作为我添加为子视图的每个类的属性传递?

更新:或者这是NotificationCenter的工作吗?

2 个答案:

答案 0 :(得分:4)

UIViewController是UIResponder的子类,实例自动插入到它们控制的视图后面的响应器链中。因此,您可以在UIViewController的子类中实现与UIView的子类中相同的事件方法,它们将“正常工作”;也就是说,它们会被自动调用。

因此,如果您的视图控制器需要响应-touchesEnded:withEvent:,只需直接在UIViewController子类中实现该方法即可。如果视图还需要响应事件而执行某些操作,则始终可以从-touchesEnded:withEvent:(或其他)实现中向其发送消息。

答案 1 :(得分:1)

您可以尝试使用委托协议将所需的触摸处理事件从uiview子类委派给uiviewcontroller。视图控制器可以在实例化或添加每个子视图时将自身设置为委托。

在MVC范例中,如果您想要处理特定于V视图内部(按钮外观/位置)的触摸,那么您可能希望在V视图中处理该触摸,但如果触摸影响某些状态,则查看(它在更大的窗口中的位置等)你可能想要通过触摸C控制器的处理来设置M模型中的状态。