【问题标题】:Handling touch event logic in Subview or ViewController在 Subview 或 ViewController 中处理触摸事件逻辑
【发布时间】:2010-08-30 17:08:30
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c cocoa-touch uikit uiviewcontroller


    【解决方案1】:

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

    因此,如果您的视图控制器需要响应-touchesEnded:withEvent:,只需在您的 UIViewController 子类中直接实现该方法即可。如果视图还需要对事件做出响应,您可以随时从 -touchesEnded:withEvent:(或其他)实现中向其发送消息。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-04-20
        • 1970-01-01
        • 2010-12-02
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多