我只是想知道是否有任何方法可以捕获与应用程序的任何用户交互。
我问的原因是,当用户与应用程序交互时,我会更新数据库中的日期。如果他们的日期超过10分钟,则他们会被其他用户视为离线,直到他们回归并与该计划进行互动。
是否有人对如何捕获任何用户互动以更新此字段有任何想法?
由于
P.S。它是一个导航应用程序。所以,即使我可以向导航控制器添加一个处理程序来说明何时更改页面可能会执行???
答案 0 :(得分:2)
最方便的方法可能是继承UIApplication并覆盖sendAction:to:from:forEvent:
方法。您还需要在Info.plist文件中添加一个名为“NSPrincipalClass”的密钥,其中包含一个包含子类名称的字符串值,它将UIKit告诉您的子类代替UIApplication。
<强> MyApplication.m:强>
- (BOOL)sendAction:(SEL)action to:(id)target
from:(id)sender forEvent:(UIEvent *)event
{
ResetInterationTimeout();
return [super sendAction:action to:target from:sender forEvent:event];
}
<强>的Info.plist:强>
<key>NSPrincipalClass</key>
<string>MyApplication</string>
答案 1 :(得分:0)
如果通过交互你的意思是'触摸'那么你可以通过在NavigationController中负责注册触摸的每个UIViewController上放置UIView(如果没有全局的UIView)来轻松实现这一点,将当前日期保存到更高级别的控制器(即使AppDelegate可能正常工作)。然后,此控制器可以将日期与之前的日期进行比较(您必须存储它),如果时差超过您的阈值,您可以通过发送正确的对象来触发您的操作。
Here是Apple关于如何捕捉触摸的指南(您需要覆盖touchesBegan:WithEvent:
方法才能获得第一次触摸)