gpt4 book ai didi

ios - 获取 UIButton 的长触力

转载 作者:行者123 更新时间:2023-11-28 13:50:08 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个由施加的力控制的按钮,但我似乎无法可靠地获取力值的更新。

现在,我只通过 touchesBegan、touchesMoved 和 touchesEnded 注册触摸,这在大多数时间都有效,但并非总是有效。

可以将手指放在屏幕上并施加压力而不触发 touchesMoved 事件。如果您用力按下屏幕(足以使力值达到最大)并且不移动手指,它只会调用带有初始(~0)力的 touchesBegan 并且不会调用 touchesMoved 直到您摆动手指或释放压力所以力可以从最大值改变。

这意味着无法判断用户当前正在用力按压。 有谁知道一种不断轮询触摸并读取其力值的方法?除了触摸事件之外,还有其他读取触摸屏信息的方法吗?

此功能纯粹依赖于强制触摸,所以我不关心没有 3D Touch 的用户的兼容性,是否已关闭,或无障碍设施。谢谢!

编辑:我似乎错误地识别了问题。 touchesBegan(和 beginTracking)事件在用力按下而不移动时不会被调用,直到按下后约 1 秒。当它们出现时,会显示最大力(意思是当前值,而不是起始值)我已经测试过这在其他应用程序中也是如此,并且需要一些练习才能正确。这可能是系统预料到了一些窥视行为并阻止了触摸吗?有什么解决办法吗?

最佳答案

不要对 UIButton 子类使用 touchesBegan 方法。而不是简单地覆盖这两个方法..

class Button: UIButton {
override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
//This is the alternate method of touchesBegan
return true
}
override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
//This is the alternate method of touchesMoved
let force = touch.force
return true
}
}

关于ios - 获取 UIButton 的长触力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54780568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com