问题是:我有一个React Native/Redux应用程序。我需要确保我可以在应用程序不活动X分钟后锁定屏幕(真的显示模式((理论上,有些人可能会让屏幕"一直打开",所以我不能依赖屏幕自动关闭(。
我提出的解决方案:我想检测任何触摸事件何时发生。我不想干扰他们,也不想做任何事情,除了重置setTimeout
。但我只想知道屏幕什么时候被触摸过。
显示模态本身不是问题,并且已经在工作。如果应用程序出于任何原因离开前台,我也会让它显示模态。我只需要暂停。
我尝试过使用TouchableWthoutFeedback来包装整个UI,并且sorta可以工作,但当Touchable位于组件树的较低位置并处理事件时,它不会接收到任何事件。但我也只使用了onPressIn
,我不确定它上的其他东西是否能按需要工作。我已经简单地看了PanResponder
,但它看起来比我可能需要的要复杂一些?还不确定。
我对其他建议持开放态度,但我唯一能想到的就是让应用程序中的所有其他动作(即使是我还没有创建的动作(都在redux旗杆上发送一个调度,这似乎非常严厉,容易出错。
这可行吗?如果不是,我有什么选择?
我找到了解决方案。它将添加一个onStartShouldSetResponderCapture
回调作为包含View的道具。我可以在这个回调中返回false,但仍然注意到所有通过的触摸事件。Capture
部分很重要,因为它使您能够在"真正的"可触摸对象到达之前访问事件
然后,在回调中,我只需清除并重新创建计时器。