djn*_*ely 4 ios swift haptic-feedback
我正在使用一些 UIGestures(特别是强制触摸)。我已经完成了所有这些工作,附加的 UI 更新/动画都在按强制触摸工作。但是,我想在硬按时添加触觉反馈。令我沮丧的是,这段代码不起作用。函数被调用,界面更新,但没有触觉反馈。有什么我在这里想念的吗?权限、能力等?
@objc func forceTouchHandler(_ sender: ForceTouchGestureRecognizer) {
print("force touch")
UINotificationFeedbackGenerator().notificationOccurred(.success)
self.updateInterface()
}
Run Code Online (Sandbox Code Playgroud)
提前感谢您的任何反馈。
您不需要任何权限即可使用反馈生成器。当您使用麦克风时,它将不起作用。但在其他情况下,一切都应该没问题。尝试prepare()在通知之前调用方法。
let generator = UINotificationFeedbackGenerator()
generator.prepare()
generator.notificationOccurred(.success)
Run Code Online (Sandbox Code Playgroud)
因此,我进行了一些挖掘,但问题似乎是我在 iPhone 6 上进行测试,它不支持UINotificationFeedbackGenerator. 我想既然他们提供了触觉触摸,并且没有抛出任何错误,那么世界上一切都是正确的。
所以,这就是我最终要做的事情:
let modelName = UIDevice.modelName
if audioModels.contains(modelName) {
AudioServicesPlaySystemSound(1519)
} else {
UINotificationFeedbackGenerator().notificationOccurred(.success)
}
Run Code Online (Sandbox Code Playgroud)
这UIDevice.modelName只是我在互联网(可能的堆栈)上找到的获取设备名称的辅助函数。然后,我将该名称与我设置的一个小数组进行比较 -audioModels需要播放音频而不是使用NotificationFeedbackGenerator. 不确定是否有更好更直观的方法来检查每个设备的功能(如果有,请告诉我),但这对我有用。
再次感谢您调查该问题。
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |