使用Swift 3D触摸力值来改变声音的音量

时间:2017-11-21 20:10:49

标签: ios swift xcode 3dtouch

当按下按钮时,我尝试使用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时,这是一个问题。

我的方法是我尝试做到这一点的好方法还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

它通常更容易使用手势识别器,但您仍然可以使用UIResponder触摸方法;但是你使用的是错误的。当力很可能是0或接近它时,touchesBegan只会在触摸开始时给你力量。您需要在整个触摸过程中获得更新,因此您需要touchesMoved。当然,你必须决定触摸是否移动太多,或者压力是否已经改变,这就是为什么它更容易使用UILongPressGestureRecognizer;它为你做到了这一点。