目标:
我需要能够告诉用户何时与iPhone
应用进行交互。
5分钟后,我将自动logout
用户,但如果用户正在与应用互动,我不想这样做。
我已阅读过有关shouldReceiveTouch:
的内容,但如果用户触摸某些内容,则会调用它。我可以登录那里重置5分钟计时器。
如何触摸任何屏幕上的任何view
,5分钟计时器重新开始?
是否可以在不实施shouldReceiveTouch:
的情况下执行此操作?
感谢任何帮助。
答案 0 :(得分:3)
至少有3种方法:
(1)我认为最好的建议in this post。基本上你会覆盖-sendEvent:
上的UIApplication
。但有人提到这可能不再适用于iOS 7 - YMMV。
(2)另一种不太干净的解决方案是使用method swizzling。您可以在UIView上替换您自己实现的方法,例如: -touchesEnded:withEvent:
或-hitTest:withEvent:
。
(3)如果您的应用不使用任何第三方视图控制器,您可以创建自定义基类UIViewController并制作所有视图控制器(登录视图控制器除外)之前显示的任何内容)继承自此基类。此视图控制器将具有手势识别器或可能覆盖-touchesEnded:withEvent:
或-hitTest:withEvent:
等方法。
对于所有方法,您可能会使用单例来跟踪最后一次触摸的时刻。也许单身人士会使用倒数计时器。单例可能有a multicast delegate或使用NSNotificationCenter
通知其他视图控制器计时器已用完。
P.S。:我应该注意你应该仔细考虑方法调整。如果某个其他项目或库调用相同的方法,您将无法确定哪种实现用于混合方法。