4

我正在使用Apple 开发人员文档中描述的UIImpactFeedbackGenerator ,但是在我调用 ImpactOccurred 和您感觉到触觉之间似乎有一点延迟——可能是十分之一秒或类似的时间。当我同时播放声音时,这一点尤其明显——声音明显先于触觉。

其他人在Apple Developer Forums上写过同样的事情,但没有解决方案。

我用以下方法初始化 UIImpactFeedbackGenerator:

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

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

[impactFeedbackGen prepare];

然后最后播放触觉,使用:

[impactFeedbackGen impactOccurred];

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

想法?谢谢!

4

1 回答 1

2

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

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

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

prepare可以通过多次调用来扩展准备好的状态,但是在这里你也必须小心,因为在某个阈值之后,系统会将引擎恢复到空闲状态,并忽略进一步的调用,prepare直到发生影响被触发。

于 2017-03-20T01:38:04.643 回答