【发布时间】:2019-02-20 06:59:35
【问题描述】:
在我的应用中,我有一个按钮,由施加的力的大小控制,但我似乎无法可靠地获取力值的更新。
目前,我只通过 touchesBegan、touchesMoved 和 touchesEnded 注册触摸,这在大多数情况下都有效,但并非总是如此。
可以将手指放在屏幕上并施加压力,而不会触发 touchesMoved 事件。如果您用力按下屏幕(足以使力值最大化)并且不移动手指,它只会以初始(~0)力调用 touchesBegan 并且在您摆动手指或释放压力之前不会调用 touchesMoved所以力可以从最大值改变。
这意味着无法判断用户当前是否在用力按下。 有谁知道不断轮询触球并读取其力量值的方法?除了触摸事件,还有其他读取触摸屏信息的方法吗?
这个功能完全依赖于强制触摸,所以我不关心没有 3D Touch 的用户的兼容性,是否关闭它,或可访问性调整。谢谢!
编辑:我似乎误认了问题。 touchesBegan(和 beginTracking)事件不在用力按下而不移动直到按下后约 1 秒时被调用。当它们出现时,会显示最大力(表示当前值,而不是初始值)我已经测试过这在其他应用程序中是正确的,并且需要一些练习才能正确。这可能是系统预期某些偷看行为并拒绝触摸吗?有什么办法解决吗?
【问题讨论】: