如何在UIKit中检测触摸的速度?



我正在为iPad和iPhone开发MIDI键盘应用程序。我已经能够发送note on/note offMIDI 消息,但只能以固定的速度发送。(我可以给用户一个滑块来调整速度,但这也不是最佳的。

我想检测触摸的速度,例如用户在屏幕上点击的力度。(我指的不是滑动手势的速度,这当然是完全不同的东西。我也不是说3D Touch的力量。

我确信这是可能的,即使在没有3D Touch的设备上也是如此。苹果在他们的GarageBand应用程序中使用它,它运行得很好:当你轻轻触摸屏幕时,你会听到一个柔和的音符,当你用力敲击屏幕时,你会得到更硬的声音。

所以我想在我的应用程序中做同样的事情。 有人对如何实现这一点有建议吗?提前感谢!

您可以在 UIKit 中访问 UITouch 覆盖touchesMoved函数的强制:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesMoved(touches, with: event)
guard let touch = touches.first else { return }
// range between 0 and touch.maximumPossibleForce
print(touch.force)
}

最新更新