如何使用多视图应用程序接收应用程序范围的事件

时间:2009-08-07 05:10:53

标签: iphone iphone-sdk-3.0

我正在开发一个带有多视图的iPhone应用程序(导航控制器),但我喜欢在用户触摸视图的任何视图时接收事件。我理解它可以通过子类化应用程序委托来完成吗?如果这是真的我怎么能这样做?我的要求是,我喜欢在用户触摸我的应用程序中的任何视图时立即收到活动。

感谢您的帮助和时间。

3 个答案:

答案 0 :(得分:1)

您对subclassing UIApplication的引用将有效。阅读评论,它涵盖了一种有点古怪的IMO实现方式(通过让AppDelegate成为UIApplication的子类)。我自己,我会创建一个单独的类作为UIApplication子类,而不是让app委托做两个工作,但我看到了这两种方法的优点。

也就是说,这是一个非常大而且不寻常的棒,可能暗示设计失败。你用这个解决了什么问题?

答案 1 :(得分:0)

这样做的一种方法是使用一个Singleton类(作为观察者/中介者),应用程序就是一个例子,你可以让viewControllers在某个特定的触摸事件中被认可。视图。当触摸发生时,Singleton类被告知事件,结果它通知所有订户事件的事件。 这是一个例子

   @interface MyEventClass
  {

  -(void)TouchEventDidOccur; 
  -(void)subscribeToTouchEvent:(id)delegate selector(selector):sel
  }

以上是单身类

现在这是视图touchesBegan方法可能看起来像

的示例
-(void)touchesBegan...
{
    [[MyEventClass sharedInstance] TouchEventDidOccur];
}

以及如何订阅活动

 [[MyEventClass sharedInstance] subscribeToTouchEvent:self selector:@selector(receiveTouchEvent:)]

希望这会有所帮助

答案 2 :(得分:0)

使用notifications有什么问题?如果您在应用程序中断开了类,那么让它们监听特定通知是微不足道的,然后让您的视图或视图控制器在触摸事件发生时发布该通知。所有观察员都将对通知采取行动。