ios UIImpactFeedbackGenerator不工作

9bfwbjaz  于 2023-08-08  发布在  iOS
关注(0)|答案(5)|浏览(324)

我试图使用新的UIImpactFeedbackGenerator的触觉反馈,但它不工作。

  • 在iPhone 7上测试
  • iOS 10.1.1
  • 启用系统支撑襻设置

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

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

字符串
我在UILongPressGestureRecognizer委托中触发它。
你知道是什么问题吗?

mrwjdhj3

mrwjdhj31#

我也遇到了同样的问题,事实证明,当使用真实的相机输入时,UIImpactFeedbackGenerator不会给予任何触觉反馈

frebpwbc

frebpwbc2#

我在文档中遇到了同样的问题:
...请注意,调用这些方法不会直接播放触觉。相反,它会通知系统该事件。然后,系统基于设备、应用的状态、剩余电池电量和其他因素来确定是否播放触觉。例如,当前仅播放触觉反馈:

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

我想你只需要相信系统知道什么时候应该开火...我不喜欢这种方法,原因很明显--因此使用AudioServicesPlaySystemSound and k​System​Sound​ID_Vibrate
...在某些iOS设备上,您可以传递k System Sound ID_Vibrate常量来调用振动。在其他iOS设备上,使用该常量调用此函数不会产生任何效果。

目标-C

import AudioToolbox
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);

字符串

雨燕3

import AudioToolbox
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))

1zmg4dgp

1zmg4dgp3#

也许你不应该使用double init。

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

字符串
另外,请确保您在此调用之前执行了[[AVAudioSession sharedInstance] setAllowHapticsAndSystemSoundsDuringRecording:YES];

sc4hvdpw

sc4hvdpw4#

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

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

字符串
工作就像一个魅力!

dfty9e19

dfty9e195#

在我的情况下-iPhone中的设置被禁用。
设置->声音和触觉->系统触觉
启用后-触觉成为工作。
x1c 0d1x的数据

相关问题