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

Using Swift 3D touch force value to change volume of a sound

我正在尝试使用 3D 触摸力值来更改按下按钮时 AVAudioUnitSampler 的音量,具体取决于使用的力的大小。

这是我当前获取力值的代码

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        print(touch.force)
    }
}

问题是,有时当我用力按压 phone(使用 iPhone 7 plus 作为物理设备)时,我得到 0.0.有时我会得到大于 0.0 的值,但当我用力按压并得到 0.0 时,这是一个问题。

我所尝试的方法是完成此操作的好方法还是有更好的方法?

使用手势识别器通常更容易,但您仍然可以使用 UIResponder 触摸方法;但是你用错了。 touchesBegan 只会在力很可能为 0 或接近 0 时给你触摸开始时的力。您需要在整个触摸过程中获取更新,所以您想要 touchesMoved。当然,您随后必须确定触摸是否移动太多,或者是否只是压力发生了变化,这就是为什么它更容易使用的原因 UILongPressGestureRecognizer;它会为你做这件事。