首页 > 解决方案 > 如何检测 UIKit 中的触摸速度?

问题描述

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

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

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

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

标签: iosswiftuikit

解决方案


您可以在 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)
}

推荐阅读