iOS 触觉反馈未触发
iOS Haptic Feedback not firing
我正在使用一些UI手势(尤其是用力触摸)。我有所有这些工作,额外的 UI updates/animations 都在强制触摸下工作。但是,我想在用力按压时添加触觉反馈。令我沮丧的是,这段代码不起作用。函数被调用,界面更新,但没有触觉反馈。我在这里缺少什么吗?权限、能力等?
@objc func forceTouchHandler(_ sender: ForceTouchGestureRecognizer) {
print("force touch")
UINotificationFeedbackGenerator().notificationOccurred(.success)
self.updateInterface()
}
提前感谢您的任何反馈。
您不需要任何权限即可使用反馈生成器。当您使用麦克风时,它将不起作用。但在其他情况下,一切都应该没问题。尝试在通知之前调用 prepare()
方法。
let generator = UINotificationFeedbackGenerator()
generator.prepare()
generator.notificationOccurred(.success)
所以,进行了一些挖掘,但问题是我正在 iPhone 6 上进行测试, 不 支持 UINotificationFeedbackGenerator
。我想既然他们提供了触觉触摸,而且没有抛出任何错误,世界上一切都是正确的。
所以,这就是我最后做的事情:
let modelName = UIDevice.modelName
if audioModels.contains(modelName) {
AudioServicesPlaySystemSound(1519)
} else {
UINotificationFeedbackGenerator().notificationOccurred(.success)
}
UIDevice.modelName
只是我在互联网上找到的帮助函数(概率堆栈),它获取设备名称。然后我将该名称与我设置的一个小数组进行比较 - audioModels
- 需要播放音频而不是使用 NotificationFeedbackGenerator
的设备。不确定是否有更好更直观的方法来检查每个设备的功能(如果有请告诉我)但这对我有用。
再次感谢您调查问题。
对我来说,问题是触觉在系统级别被禁用。
Settings -> Sounds & Haptics -> System Haptics
确保它已打开。
我正在使用一些UI手势(尤其是用力触摸)。我有所有这些工作,额外的 UI updates/animations 都在强制触摸下工作。但是,我想在用力按压时添加触觉反馈。令我沮丧的是,这段代码不起作用。函数被调用,界面更新,但没有触觉反馈。我在这里缺少什么吗?权限、能力等?
@objc func forceTouchHandler(_ sender: ForceTouchGestureRecognizer) {
print("force touch")
UINotificationFeedbackGenerator().notificationOccurred(.success)
self.updateInterface()
}
提前感谢您的任何反馈。
您不需要任何权限即可使用反馈生成器。当您使用麦克风时,它将不起作用。但在其他情况下,一切都应该没问题。尝试在通知之前调用 prepare()
方法。
let generator = UINotificationFeedbackGenerator()
generator.prepare()
generator.notificationOccurred(.success)
所以,进行了一些挖掘,但问题是我正在 iPhone 6 上进行测试, 不 支持 UINotificationFeedbackGenerator
。我想既然他们提供了触觉触摸,而且没有抛出任何错误,世界上一切都是正确的。
所以,这就是我最后做的事情:
let modelName = UIDevice.modelName
if audioModels.contains(modelName) {
AudioServicesPlaySystemSound(1519)
} else {
UINotificationFeedbackGenerator().notificationOccurred(.success)
}
UIDevice.modelName
只是我在互联网上找到的帮助函数(概率堆栈),它获取设备名称。然后我将该名称与我设置的一个小数组进行比较 - audioModels
- 需要播放音频而不是使用 NotificationFeedbackGenerator
的设备。不确定是否有更好更直观的方法来检查每个设备的功能(如果有请告诉我)但这对我有用。
再次感谢您调查问题。
对我来说,问题是触觉在系统级别被禁用。
Settings -> Sounds & Haptics -> System Haptics
确保它已打开。