2012-03-23 85 views
0

在我的iphone應用程序,我在一個視圖中做簡單的圖像動畫,並在同一視圖中我有我在其中顯示HTML.i的WebView通過使無限調用我的動畫代碼(animationMethodA),我這樣做是通過設置NSTimer.My問題是,當我滾動WebView,然後同一時間動畫圖像得到停止,並且動畫圖像保持在休息階段(停止),直到我停止滾動webView.As停止滾動WebView動畫自動啓動。事實上,我得到了該問題的原因。在滾動WebView time(NSTimer)時不能調用該方法。NSTimer不工作當我滾動WebView

請讓我該怎麼辦這個問題?

謝謝。

回答

1

最後,我得到了我的問題的解決方案。

我必須將定時器添加到另一個RunLoopMode,默認情況下定時器被添加到NSDefaultRunLoopMode。這意味着定時器只在應用程序的運行循環處於NSDefaultRunLoopMode時才執行。

現在,當用戶觸摸屏幕(例如滾動UIScrollView)時,運行循環模式將切換到NSEventTrackingRunLoopMode。而現在,運行循環不再在NSDefaultRunMode中,定時器將不會執行。這種醜陋的效果是,只要用戶觸摸屏幕,該計時器就會被阻止。而當用戶滾動時,這可能會很長時間,因爲計時器被阻塞直到滾動完全停止。而當用戶繼續滾動時,定時器再次被阻止。

幸運的是,解決此問題的方法很簡單:您可以將計時器添加到另一個NSRunLoopMode。當將定時器添加到NSRunLoopCommonModes時,它將在所有運行循環模式下執行(已被聲明爲「常見」模式集合中的成員,準確而言)。這意味着計時器不僅在NSDefaultRunLoopMode中工作,而且在NSEventTrackingRunLoopMode(當用戶觸摸屏幕時)也工作。

等你以後初始化計時器,將它添加到NSRunLoopCommonModes

[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

I got this answer form this link

我希望這可能有助於有人... !!!