UIImpactFeedbackGenerator 在调用 impactOccured 后延迟
UIImpactFeedbackGenerator delayed after calling impactOccured
我正在尝试在 AVCaptureSession 中使用 UIImpactFeedbackGenerator。我有
AVAudioSession.sharedInstance().setAllowHapticsAndSystemSoundsDuringRecording(true)
在会话中允许触觉反馈(iOS 仅限 13)。
但是,反馈总是延迟半秒左右。
这里是触发事件的代码
@IBAction func doubleTapGesture(_ sender: UITapGestureRecognizer) {
if #available(iOS 13.0, *) {
DispatchQueue.main.async {
self.UIImpactHapticFeedback!.impactOccurred()
}
}
self.switchCamera
}
我在我的 viewDidLoad 中设置了 UIImpactHapticFeedback,它也准备了实例。
我认为这与切换相机动作有关,因为触觉反馈只有在切换相机动作完成后才会发生。
谁能帮我获得即时的触觉反馈?
删除
DispatchQueue.main.async
您已经在主队列中,因此这条线路只是在延迟您,直到调用 switchCamera 之后。
所以我刚刚找到了解决这个问题的方法。由于苹果在他们的指南中指出“请注意,调用这些方法不会直接播放触觉。相反,它会将事件通知系统。”,我猜它会等到相机切换完成才能触发触觉反馈。
解决此问题的方法是加入此延迟,以便系统相对立即调用此事件。
@IBAction func doubleTapGesture(_ sender: UITapGestureRecognizer) {
if #available(iOS 13.0, *) {
self.UIImpactHapticFeedback!.impactOccurred()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1)
{
self.switchCamera()
}
}
}
我正在尝试在 AVCaptureSession 中使用 UIImpactFeedbackGenerator。我有
AVAudioSession.sharedInstance().setAllowHapticsAndSystemSoundsDuringRecording(true)
在会话中允许触觉反馈(iOS 仅限 13)。
但是,反馈总是延迟半秒左右。
这里是触发事件的代码
@IBAction func doubleTapGesture(_ sender: UITapGestureRecognizer) {
if #available(iOS 13.0, *) {
DispatchQueue.main.async {
self.UIImpactHapticFeedback!.impactOccurred()
}
}
self.switchCamera
}
我在我的 viewDidLoad 中设置了 UIImpactHapticFeedback,它也准备了实例。
我认为这与切换相机动作有关,因为触觉反馈只有在切换相机动作完成后才会发生。
谁能帮我获得即时的触觉反馈?
删除
DispatchQueue.main.async
您已经在主队列中,因此这条线路只是在延迟您,直到调用 switchCamera 之后。
所以我刚刚找到了解决这个问题的方法。由于苹果在他们的指南中指出“请注意,调用这些方法不会直接播放触觉。相反,它会将事件通知系统。”,我猜它会等到相机切换完成才能触发触觉反馈。
解决此问题的方法是加入此延迟,以便系统相对立即调用此事件。
@IBAction func doubleTapGesture(_ sender: UITapGestureRecognizer) {
if #available(iOS 13.0, *) {
self.UIImpactHapticFeedback!.impactOccurred()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1)
{
self.switchCamera()
}
}
}