当按下按钮时,我尝试使用3D触摸力值来改变AVAudioUnitSampler的音量,具体取决于使用的力量。
这是我获取力值的当前代码
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
print(touch.force)
}
}
问题在于,有时当我在手机上用力按压(使用iPhone 7 plus作为物理设备)时,我得到0.0。有时我会得到大于0.0的东西,但是当我非常努力地按下并获得0.0时,这是一个问题。
我的方法是我尝试做到这一点的好方法还是有更好的方法?
答案 0 :(得分:1)
它通常更容易使用手势识别器,但您仍然可以使用UIResponder触摸方法;但是你使用的是错误的。当力很可能是0或接近它时,touchesBegan
只会在触摸开始时给你力量。您需要在整个触摸过程中获得更新,因此您需要touchesMoved
。当然,你必须决定触摸是否移动太多,或者压力是否已经改变,这就是为什么它更容易使用UILongPressGestureRecognizer
;它为你做到了这一点。