iOS触觉反馈未触发

时间:2018-09-21 19:29:57

标签: ios swift haptic-feedback

我正在使用某些UIGestures(特别是强制触摸)。我已完成所有工作,其他UI更新/动画均在强制触摸下正常工作。但是,我想在硬按上添加触觉反馈。令我沮丧的是,这段代码无法正常工作。该函数被调用,界面已更新,但没有触觉反馈。我在这里想念什么吗?权限,功能等?

@objc func forceTouchHandler(_ sender: ForceTouchGestureRecognizer) {
    print("force touch")
    UINotificationFeedbackGenerator().notificationOccurred(.success)
    self.updateInterface()
}

在此先感谢您的反馈。

2 个答案:

答案 0 :(得分:2)

因此,进行了一些挖掘,但问题似乎出在我正在iPhone 6上进行测试,该iPhone 不支持UINotificationFeedbackGenerator。我知道了,因为它们提供了触觉效果,并且没有抛出任何错误,这在世界上都是对的。

所以,这就是我要做的事情:

let modelName = UIDevice.modelName
if audioModels.contains(modelName) {
    AudioServicesPlaySystemSound(1519)
} else {
    UINotificationFeedbackGenerator().notificationOccurred(.success)
}

UIDevice.modelName只是我在Internet(问题堆栈)上找到的获取设备名称的辅助函数。然后,我将该名称与我设置的audioModels阵列进行比较,该阵列需要播放音频而不是使用NotificationFeedbackGenerator的设备。不知道是否有更好的直观方法来检查每个设备的功能(请告诉我是否有),但这对我有用。

再次感谢您调查此问题。

答案 1 :(得分:1)

您不需要任何权限即可使用反馈生成器。使用麦克风时,它将不起作用。但是在其他情况下,一切都应该没问题。尝试在通知之前调用prepare()方法。

let generator = UINotificationFeedbackGenerator()
generator.prepare()
generator.notificationOccurred(.success)