2009-08-07 56 views
1

我正在开发一个带有多视图(导航控制器)的iPhone应用程序,但是如果用户在视图的任何视图中都触摸,我喜欢接收一个事件。我知道它可以通过子类化应用程序委托来完成?如果那是真的,我该怎么办?我的要求是,只要用户在我的应用程序中的任何视图中触摸了任何位置,我都希望收到一个事件。如何使用多视图应用程序接收应用程序范围内的事件

感谢您的帮助和时间。

回答

1

您对subclassing UIApplication的引用将起作用。通过注释读下来,它涵盖了一个有点古怪的IMO实现它的方式(通过使AppDelegate成为UIApplication的一个子类)。我自己,我会创建一个单独的类作为UIApplication子类,而不是让应用程序委托来完成这两项工作,但是我看到了这两种方法的优点。

这就是说,这是一个非常大且不寻常的棒,并可能表明设计失败。你用这个解决什么问题?

0

一种方法是使用一个Singleton类(它充当观察者/中介者),应用程序就是一个例子,当viewController在触摸事件某些观点。当触摸发生时,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:)] 

希望这可以帮助

+0

谢谢丹尼尔。我看到另一个线程相似的答案 http://stackoverflow.com/questions/273450/iphone-detecting-user-inactivity-idle-time-since-last-screen-touch 并希望实施类似的解决方案。用你提供的方法,我将不得不在每个视图中实现这一点。我的应用程序中有大约25个视图。 – iamMobile 2009-08-07 05:55:17

+0

http://stackoverflow.com/questions/273450/iphone-detecting-user-inactivity-idle-time-since-last-screen-touch 我想知道我怎么能从UIWindow – iamMobile 2009-08-07 05:55:53

+0

我的应用程序委托的子类不幸你如果不修改您的25个视图中的任何一个来订阅该活动,将无法避免这种情况,这是因为您需要告诉谁发送了该活动,您对该活动感兴趣。应用程序委托是一个协议,你不要继承它。 – Daniel 2009-08-07 06:05:55

0

使用notifications有什么问题?如果您的应用程序中存在断开连接的类,那么让它们监听特定通知并让触发事件发生时,您的视图或视图控制器会发布该通知并不重要。所有观察员都将对通知采取行动。

相关问题