2017-03-19 108 views
1

我使用的是UIImpactFeedbackGenerator,如in Apple's developer docs所述,但在我調用impactOccurred和感受觸覺之間似乎有輕微的延遲 - 可能是十分之一秒或類似的時間。當我同時播放聲音時,這一點尤其明顯 - 聲音明顯位於觸覺之前。UIImpactFeedbackGenerator impactOccurred輕微延遲

其他人在Apple Developer Forums中寫了同樣的東西,但沒有解析。

我初始化UIImpactFeedbackGenerator有:

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

立即呼救準備,並且在撞擊前經過的幾秒鐘內多次致電發生:

[impactFeedbackGen prepare]; 

後來終於發揮觸覺,具有:

[impactFeedbackGen impactOccurred]; 

不知道是否它的相關,但我am在同一個應用程序中使用UISelectionFeedbackGenerator,但不是在同一時間。

想法? 謝謝!

回答

0

我認爲避免與UIImpactFeedbackGenerator延遲的技巧是什麼時候打電話給prepare

顯然你不能簡單地打電話prepare,然後立即觸發影響,因爲引擎需要時間來真正準備。

另一方面,調用prepare後,爲了節省電力,簡化引擎將只保持短時間(幾秒鐘)的準備狀態。

可以通過多次撥打prepare來擴展準備好的狀態,但這裏也必須小心,因爲在達到某個閾值後,系統將使引擎回到空閒狀態,並忽略進一步的呼叫至prepare,直至觸發影響。

+0

對,我還閱讀了文檔 - 我通常會提前2秒鐘左右......也嘗試過更短和更長的時間範圍,但總會有延遲。 – drewster