我正在尝试将新的UIImpactFeedbackGenerator
用于触觉反馈,但它无效。
我在Objective-C
中使用以下代码示例UIImpactFeedbackGenerator *myGen = [[UIImpactFeedbackGenerator alloc] init];
[myGen initWithStyle:(UIImpactFeedbackStyleMedium)];
[myGen impactOccurred];
myGen = NULL;
我在UILongPressGestureRecognizer
委托中触发它。
知道问题可能是什么?
答案 0 :(得分:3)
我遇到了同样的问题,来自文档:
...请注意,调用这些方法不会直接播放触觉。 相反,它会通知系统事件。然后系统 决定是否根据设备播放触觉, 应用程序的状态,剩余的电池电量等 因素。例如,目前仅播放触觉反馈:
- 在具有支持的Taptic Engine(iPhone 7和iPhone 7 Plus)的设备上。
- 当应用程序在前台运行时。当系统
- 已启用触觉设置。
我猜你只需要相信系统就知道什么时候应该开火...... 出于显而易见的原因,我不喜欢这种方法 - 所以使用了AudioServicesPlaySystemSound and kSystemSoundID_Vibrate:
...在某些iOS设备上,您可以传递k System Sound ID_Vibrate 不断调用振动。在其他iOS设备上,调用此方法 具有该常数的函数什么都不做。
<强>目标C 强>
import AudioToolbox
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
Swift 3
import AudioToolbox
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
答案 1 :(得分:1)
我在2017年WWDC上问了一位Apple工程师,为什么我的触觉请求有时会失败,他让我在下一个运行循环中调用impactOccurred
,如下所示:
[self.feedbackGenerator performSelector:@selector(impactOccurred) withObject:nil afterDelay:0.0f];
像魅力一样工作!
答案 2 :(得分:1)
我遇到了同样的问题,事实证明,在使用实时摄像头输入时,UIImpactFeedbackGenerator不会提供任何触觉反馈