我正在使用Apple开发人员文档中描述的UIImpactFeedbackGenerator,但是在我调用impactHappen和您感觉到触觉之间似乎有轻微的延迟 - 可能是十分之一秒或类似。 当我同时播放声音时,这一点尤其明显 - 声音明显先于触觉。
其他人在苹果开发者论坛上写了同样的事情,但没有解决方案。
我初始化UIImpactFeedbackGenerator:
// Set up impact
UIImpactFeedbackStyle sty = UIImpactFeedbackStyleMedium;
impactFeedbackGen = [[UIImpactFeedbackGenerator alloc] initWithStyle:sty];
立即调用准备,并在影响发生前的几秒钟内重复调用:
[impactFeedbackGen prepare];
然后最后玩触觉,用:
[impactFeedbackGen impactOccurred];
不确定它是否相关,但我在同一应用程序中使用 UISelectionFeedbackGenerator,但不是同时使用。
思潮?谢谢!
使用UIImpactFeedbackGenerator延迟的诀窍是何时调用prepare
。
显然,你不能简单地打电话给prepare
然后立即触发撞击,因为发动机需要时间来实际准备。
另一方面,一旦调用prepare
,taptic 引擎只会在短时间内(几秒钟(保持准备好的状态,以节省动力。
可以通过多次调用prepare
来扩展准备状态,但是在这里也必须小心,因为在达到某个阈值后,系统会将引擎恢复到空闲状态,并忽略进一步的调用prepare
直到触发冲击。