Iphone UIView与UIViewController的通信

Iphone UIView与UIViewController的通信,iphone,cocoa-touch,uiview,uiviewcontroller,Iphone,Cocoa Touch,Uiview,Uiviewcontroller,在UIViewController中,我以编程方式创建了大约10个CustomUIView实例,并将它们放在[UIViewController视图]上 当碰到CustomUIView的任何一个实例时,我想让控制器知道并采取一些措施 我想到了两种方法: 作为CustomUIView的观察者订阅UIViewController。然后,当触发ToucheSStart:withEvent:时,调用UIViewController观察者上的方法 使用[self.nextResponder touchsbe

在UIViewController中,我以编程方式创建了大约10个CustomUIView实例,并将它们放在[UIViewController视图]上

当碰到CustomUIView的任何一个实例时,我想让控制器知道并采取一些措施

我想到了两种方法:

  • 作为CustomUIView的观察者订阅UIViewController。然后,当触发ToucheSStart:withEvent:时,调用UIViewController观察者上的方法

  • 使用[self.nextResponder touchsbegined:touchs with event:event]将事件提升到UIViewController

  • 我已经实现了这两个,它们都工作正常

    问题:以编程方式创建的视图与其UIViewController通信的最佳方式是什么?这是一条路吗?还是有第三条路


    我在网上找到的资源很好地解释了所有的Cocoa“片段”,但我很难找到整体架构的最佳实践。

    对于触摸事件,您不必做任何事情

    从:

    视图控制器与它们管理的视图紧密绑定,并参与用于处理事件的响应器链。视图控制器本身是UIResponder类的后代,并插入到托管根视图及其superview(通常属于不同的视图控制器)之间的响应器链中。如果视图控制器的视图未处理事件,则视图控制器本身可以选择在将事件传递给superview之前处理事件


    这意味着您的视图控制器可以在其视图中处理触摸事件,而无需任何额外设置,只要您不在视图中处理它们。

    对于触摸事件,您无需执行任何操作

    从:

    视图控制器与它们管理的视图紧密绑定,并参与用于处理事件的响应器链。视图控制器本身是UIResponder类的后代,并插入到托管根视图及其superview(通常属于不同的视图控制器)之间的响应器链中。如果视图控制器的视图未处理事件,则视图控制器本身可以选择在将事件传递给superview之前处理事件


    这意味着您的视图控制器可以在其视图中处理触摸事件,而无需任何额外设置。只要您不在视图中处理触摸事件。

    如果您希望视图能够与控制器通信,则可以将UIViewController设为UIView的控制器


    触摸事件将自动发送到控制器,作为的一部分。

    如果希望视图能够与控制器通信,您可以将UIViewController设置为UIViews的控制器


    触摸事件将自动发送到控制器,作为。

    Ok的一部分。所以我只是在UIViewController中实现touchStart:withEvent:。那很好。唯一的问题是,我不确定如何获得对所触及视图的引用。想法?
    [event AllTouchs]
    将为您提供活动中的触摸,对于每次触摸,您都可以进行
    触摸。查看
    以了解触摸发生在哪个视图中。看,好的。所以我只是在UIViewController中实现touchStart:withEvent:。那很好。唯一的问题是,我不确定如何获得对所触及视图的引用。想法?
    [event AllTouchs]
    将为您提供活动中的触摸,对于每次触摸,您都可以进行
    触摸。查看
    以了解触摸发生在哪个视图中。看。