在UIResponder链上发送一个事件?

时间:2012-06-27 13:59:26

标签: objective-c ios events uiresponder

我刚创建了一个自定义的UIViewController,其中包含一些用户操作,如touch。我想在parentObject中处理用户交互。换句话说,就是创建ViewController的那个。

从其他语言我习惯使用推高的事件。所以我的父对象会对它可以作出反应的ViewController对象的引用有一些监听器。

Objective C如何处理这种类型的交互?

3 个答案:

答案 0 :(得分:3)

这可以通过1)响应者链,2)通知和3)代表来完成。

  1. 所有UI对象构成响应者链,从当前聚焦的元素开始,然后是父视图等,通常直到应用程序对象。通过将动作发送到笔尖中的特殊First Responder对象,您将把它扔到响应者链中,直到有人处理它为止。您可以使用此机制触发事件,而无需知道谁和何时将处理它们。这与HTML事件模型类似。

  2. NSNotificationCenter发送的通知可以由任意数量的侦听器接收。这是最接近于C#events。

  3. 委托是将事件发送到单个对象的最简单机制。该类声明名为delegate的弱属性,该属性可以分配任何对象,以及该对象应该实现的协议。许多班级都使用这种方法;主要问题是你不能以这种方式拥有多个监听器。

答案 1 :(得分:0)

您应该查看两个viewControllers之间的交互的委托/委托。你需要先了解它是如何工作的。

https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

答案 2 :(得分:0)

听起来你需要实现一个委托协议,它允许你的'子'视图控制器与它的'父'进行通信

请参阅http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html