我正在开发一个带有多视图(导航控制器)的iPhone应用程序,但是如果用户在视图的任何视图中都触摸,我喜欢接收一个事件。我知道它可以通过子类化应用程序委托来完成?如果那是真的,我该怎么办?我的要求是,只要用户在我的应用程序中的任何视图中触摸了任何位置,我都希望收到一个事件。如何使用多视图应用程序接收应用程序范围内的事件
感谢您的帮助和时间。
我正在开发一个带有多视图(导航控制器)的iPhone应用程序,但是如果用户在视图的任何视图中都触摸,我喜欢接收一个事件。我知道它可以通过子类化应用程序委托来完成?如果那是真的,我该怎么办?我的要求是,只要用户在我的应用程序中的任何视图中触摸了任何位置,我都希望收到一个事件。如何使用多视图应用程序接收应用程序范围内的事件
感谢您的帮助和时间。
您对subclassing UIApplication的引用将起作用。通过注释读下来,它涵盖了一个有点古怪的IMO实现它的方式(通过使AppDelegate成为UIApplication的一个子类)。我自己,我会创建一个单独的类作为UIApplication子类,而不是让应用程序委托来完成这两项工作,但是我看到了这两种方法的优点。
这就是说,这是一个非常大且不寻常的棒,并可能表明设计失败。你用这个解决什么问题?
一种方法是使用一个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:)]
希望这可以帮助
使用notifications有什么问题?如果您的应用程序中存在断开连接的类,那么让它们监听特定通知并让触发事件发生时,您的视图或视图控制器会发布该通知并不重要。所有观察员都将对通知采取行动。
谢谢丹尼尔。我看到另一个线程相似的答案 http://stackoverflow.com/questions/273450/iphone-detecting-user-inactivity-idle-time-since-last-screen-touch 并希望实施类似的解决方案。用你提供的方法,我将不得不在每个视图中实现这一点。我的应用程序中有大约25个视图。 – iamMobile 2009-08-07 05:55:17
http://stackoverflow.com/questions/273450/iphone-detecting-user-inactivity-idle-time-since-last-screen-touch 我想知道我怎么能从UIWindow – iamMobile 2009-08-07 05:55:53
我的应用程序委托的子类不幸你如果不修改您的25个视图中的任何一个来订阅该活动,将无法避免这种情况,这是因为您需要告诉谁发送了该活动,您对该活动感兴趣。应用程序委托是一个协议,你不要继承它。 – Daniel 2009-08-07 06:05:55