0

我只是想知道是否有任何方法可以捕获任何用户与应用程序的交互。

我问的原因是,当用户与应用程序交互时,我会更新数据库中的日期。如果他们的约会时间超过 10 分钟,则其他用户会认为他们处于离线状态,直到他们回来并与该程序互动。

有人对我如何捕捉任何用户交互来更新此字段有任何想法吗?

谢谢

ps 它是一个导航应用程序。所以即使我可以向导航控制器添加一个处理程序来说明何时更改页面可能会这样做???

4

2 回答 2

2

最方便的方法可能是继承 UIApplication 并覆盖该sendAction:to:from:forEvent:方法。您还需要在 Info.plist 文件中添加一个名为“NSPrincipalClass”的键,其中包含一个包含子类名称的字符串值,它告诉 UIKit 到您的子类来代替 UIApplication。

我的应用程序.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];
}

信息列表:

<key>NSPrincipalClass</key>
<string>MyApplication</string>
于 2010-08-19T08:17:41.840 回答
0

如果通过交互您的意思是“触摸”,那么您可以轻松地做到这一点,方法是在您的 NavigationController 中的每个 UIViewController 上放置一个 UIView(如果没有全局的),该 UIViewController 有责任注册触摸,保存当前日期到更高级别的控制器(即使 AppDelegate 也可能工作)。然后此控制器可以将日期与前一个日期进行比较(您必须存储它),如果时间差超过您的阈值,您可以通过向正确的对象发送消息来触发您的操作。 是 Apple 提供的关于如何捕捉触摸的指南(您需要覆盖该touchesBegan:WithEvent:方法才能获得第一次触摸)

于 2010-08-19T08:20:37.033 回答