【问题标题】:UIImpactFeedbackGenerator not workingUIImpactFeedbackGenerator 不工作
【发布时间】:2016-11-25 09:19:24
【问题描述】:

我正在尝试使用新的UIImpactFeedbackGenerator 进行触觉反馈,但它不起作用。

  • 在 iPhone 7 上测试
  • iOS 10.1.1
  • 系统触觉设置已启用

我在 Objective-C 中使用以下代码示例

UIImpactFeedbackGenerator *myGen = [[UIImpactFeedbackGenerator alloc] init];
[myGen initWithStyle:(UIImpactFeedbackStyleMedium)];
[myGen impactOccurred];
myGen = NULL;

我在 UILongPressGestureRecognizer 委托中触发它。

知道可能是什么问题吗?

【问题讨论】:

  • 建议在拨打impactOccurred之前先拨打prepare,你试过吗?
  • @donnywals 是的,我也试过了,没有帮助:/
  • 你试过不以同样的方式释放myGen吗?此外,尝试在生命周期的早期移动生成器的声明,并确保在触发之前prepare 它。这有帮助吗?

标签: ios objective-c uikit


【解决方案1】:

我遇到了同样的问题,结果发现在使用实时相机输入时,UIImpactFeedbackGenerator 不会提供任何触觉反馈

【讨论】:

  • sooo.. 这里的方法是什么?如果我们有一个相机应用程序,我们不能使用它?
【解决方案2】:

我在文档中遇到了同样的问题:

...请注意,调用这些方法不会直接播放触觉。 相反,它会将事件通知系统。那么系统 根据设备确定是否播放触觉, 应用程序的状态、剩余电池电量等 因素。例如,目前仅播放触觉反馈:

  • 在支持 Taptic Engine 的设备上(iPhone 7 和 iPhone 7 Plus)。
  • 当应用程序在前台运行时。当系统
  • 触觉设置已启用。

我猜你只需要相信系统知道它应该什么时候触发...... 由于显而易见的原因,我不喜欢这种方法 - 所以使用了AudioServicesPlaySystemSound and k​System​Sound​ID_Vibrate

...在某些 iOS 设备上,您可以通过 k​System​Sound​ID_Vibrate 恒定调用振动。在其他 iOS 设备上,调用这个 具有该常数的函数什么都不做。

Objective-C

import AudioToolbox
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);

斯威夫特 3

import AudioToolbox
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))

【讨论】:

    【解决方案3】:

    也许你不应该使用双初始化。

    UIImpactFeedbackGenerator *myGen = [[UIImpactFeedbackGenerator alloc] initWithStyle: UIImpactFeedbackStyleMedium];
    [myGen impactOccurred];
    

    另外,请确保您在此次通话之前拨打了[[AVAudioSession sharedInstance] setAllowHapticsAndSystemSoundsDuringRecording:YES];

    【讨论】:

      【解决方案4】:

      我在 WWDC 2017 上询问了一位 Apple 工程师,为什么我的触觉请求有时会失败,他让我在下一个运行循环中调用 impactOccurred,如下所示:

      [self.feedbackGenerator performSelector:@selector(impactOccurred) withObject:nil afterDelay:0.0f];
      

      工作就像一个魅力!

      【讨论】:

      • 仍然不适合我。我注意到,如果我打印反馈对象,它会说它没有准备好,即使我也调用了 prepare。
      猜你喜欢
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2018-12-22
      相关资源
      最近更新 更多