2010-11-07 54 views
12

這真令人沮喪!MKMapView regionDidChangeAnimated不總是被調用!

它會被調用大部分時間,但它會停止響應捏。它將在屏幕旋轉和雙擊上被調用。不要捏!

幫助!

+1

10你有沒有得到過這個解決方案? – thekevinscott 2011-06-27 20:01:24

+0

在Apple的論壇中對此進行了一些討論:https://devforums.apple.com/message/525411 – 2011-08-30 19:31:46

+0

如果您使用自己的觸摸處理的自定義註釋視圖,請查看此討論:http:// www.iphonedevsdk.com/forum/iphone-sdk-development/79199-regiondidchangeanimated-not-always-firing.html – 2011-08-30 19:47:15

回答

7

我正在研究一些代碼有相同的問題,結果問題是UIGestureRecognizer子視圖已被添加爲MKMapView子視圖,有時,他們會導致一些委託方法不會觸發。

因此,請確保您沒有在MKMapView中添加子視圖或任何內容。

希望這會有所幫助。

3

我正在朝着代碼的地圖,然後它似乎我需要調用

[mapView setNeedsDisplay]; 

後!

+0

其實還沒有發生! – 2010-11-17 09:22:02

1

我覺得這個問題可能與多線程有關。

今天早上我有同樣的問題。我使用手勢識別器來捕獲長按事件,然後將一個pin添加到mapview。如果運行良好,但幾輪後,該地區確實改變方法停止被稱爲。

我在這裏嘗試了一些解決方案,但都沒有成功。然後,我回憶起我之前遇到的有關多線程本質行爲的其他問題。所以我嘗試將長按操作中控制mapview的代碼移動到在主線程中運行的塊。問題就解決了。

0

我管理由touchesBeganCallback

self.tapInterceptor.touchesBeganCallback = ^(NSSet *touches, UIEvent *event) { 
    self.tapInterceptor.enabled = NO; 
    // do something 
}; 

內禁用手勢識別,並在regionDidChangeAnimated委託方法

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { 
    self.tapInterceptor.enabled = YES; 
    // do something 
} 
0

每當一個敲擊手勢識別器加入到的MapView重新啓用它來解決這個問題,設置

recognizer.cancelsTouchesInView = NO; 

需要注意o如果你的業務邏輯允許雙重處理,如果觸及mapview(通過MKMapView和手勢識別器 ,這是最近干擾該地區[Will,Did] ChangeAnimated :)

相關問題