UIImpactFeedbackGenerator impactOccurred Slight Delay

UIImpactFeedbackGenerator impactOccurred Slight Delay

我正在按照 in Apple's developer docs 所述使用 UIImpactFeedbackGenerator,但在我调用 impactOccurred 和您感觉到触觉之间似乎有轻微的延迟——可能是十分之一秒或类似的延迟。当我同时播放声音时这一点尤其明显——声音明显先于触觉。

其他人在 Apple Developer Forums 中写了同样的事情,但没有解决。

我用以下方法初始化 UIImpactFeedbackGenerator:

// Set up impact
UIImpactFeedbackStyle sty = UIImpactFeedbackStyleMedium;
impactFeedbackGen = [[UIImpactFeedbackGenerator alloc] initWithStyle:sty];

立即调用准备,并在影响发生前的几秒钟内重复调用:

[impactFeedbackGen prepare];

然后最后播放触觉反馈:

[impactFeedbackGen impactOccurred];

不确定是否相关,但我在同一个应用程序中使用 UISelectionFeedbackGenerator,但不是同时使用。

想法? 谢谢!

我认为使用 UIImpactFeedbackGenerator 避免延迟的诀窍是何时调用 prepare

显然你不能简单地调用 prepare 然后立即触发影响,因为引擎需要时间来实际准备。

另一方面,一旦prepare被调用,taptic engine只会在很短的时间内(大约几秒)保持准备状态,以节省电力。

可以通过多次调用prepare来延长准备状态,但是在这里你也必须小心,因为在一定的阈值之后,系统会让引擎回到空闲状态,并在触发影响之前忽略对 prepare 的进一步调用。