我編寫了一個使用MKMapView的應用程序。此應用程序使用計時器更新屏幕上的某些信息。實際上,當用戶觸摸地圖並開始拖動時,定時器不會再被觸發,直到用戶鬆開觸摸。我注意到,在新的iOS 6中,這個問題消失了。不過,我還需要支持iOS 5.我還沒有弄清楚是否只有定時器沒有被觸發,或者根本沒有處理任何事件。任何想法?iOS 5上的MKMapView在用戶拖動和/或縮放時禁止定時器
0
A
回答
1
好的我在這裏找到了解決方案:UIScrollView pauses NSTimer until scrolling finishes
基本上你必須把NSTimer放在它自己的運行循環中。
0
嗯,這表明定時器和觸摸處理代碼正在被同一個runloop處理,或者可能是因爲觸摸被阻塞,所以當定時器完成代碼嘗試運行時,它不能。嘗試使用具有完成處理程序的異步塊來運行定時器。
- (void)startTimerInBackground {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
//Start timer here, set completion method to be called
NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 2.0
target: self
selector:@selector(timerCompletionMethod:)
userInfo: nil repeats:NO];
});
}
- (void)timerCompletionMethod:(NSTimer *)timer {
//Switch back to main thread here for completion code
dispatch_async(dispatch_get_main_queue(), ^(void) {
});
}
看看是否有幫助,也不過,請注意計時器是不可靠的,如果你需要非常精確的定時你應該尋找替代,有一些非常好的信息在這裏:
相關問題
- 1. 在viewDidLoad()中使用CLLocationManager()可防止拖動或縮放MKMapView
- 2. iOS上的Google地圖在拖動或縮放時不顯示或閃爍
- 3. 在ios 5中禁用MKMapView(iOS 6)
- 4. Android:拖拽或滑動時禁止onClick
- 5. 防止在MKMapView中滾動,同樣在縮放時
- 6. 檢測結束拖動/縮放MKMapView
- 7. jCanvas - 在縮放時拖放n拖放
- 8. 縮放時禁用平移
- 9. 在iOS上縮放時禁用表格單元格間距Safari
- 10. iOS僅在縮放時禁用地圖視圖滾動
- 11. 禁用圖像縮放時的滾動
- 12. MKMapView縮放和Region
- 13. 平移和縮放時,MkMapView在觸摸事件時不響應?
- 14. MKMapView - 可拖動的引腳在放置時會導致錯誤?
- 15. WPF在放大或縮小時拖動listboxitems
- 16. 當旋轉或縮放改變時在Raphaeljs中拖動路徑
- 17. 拖動引腳時自動滾動mkmapview
- 18. d3.js網格在拖動和縮放時左右移動
- 19. IOS拖放與縮放
- 20. 防止MKMapView不斷重新縮放和重新定位到用戶位置
- 21. MKPolylineView lineWidth需要在每次放大或縮小MKMapview時相同
- 22. 啓用和禁用註釋拖動(即時)(iOS Mapkit)
- 23. 禁止在拖動圖像或鏈接
- 24. 在ios MapView上控制縮放時間
- 25. iOS 5 MapKit在縮放/平移時使用疊加層崩潰
- 26. 如何在uibutton被拖動時應用縮放動畫?
- 27. MKMapView在地圖上拖動UIScrollView時的addAnnotation延遲
- 28. 圖像變換同時應用旋轉,拖動和縮放
- 29. iOS6 MKMapView縮放
- 30. 在iOS 5中拖動UIView
不幸的是,它不起作用。 'timerCompletionMethod'根本不被調用。我也嘗試了您提供的鏈接中建議的其他所有方法,但問題仍然存在。看起來在所有拖動/縮放操作過程中,runloop被阻塞! – AGPX