2013-07-02 126 views
2

這裏是問題:我有我的MKMapViewscrollEnabled=YESzoomEnabled=YES,我有一個按鈕,設置某些區域的地圖,並設置scrollEnabled=NOzoomEnabled=NO停止MKMapView惰性滾動

當我只需點擊該按鈕時,一切正常。但是,如果我滾動我的地圖一點,所以它開始進一步滾動'慣性原因,並點擊我的按鈕,而地圖繼續滾動我卡在我的地圖滾動到慣性滾動期間的區域。

下面是一些代碼,如果有幫助:

- (void)openMap 
{ 
    MKMapView * mapView = self.contentView.locationView.mapView; 
    mapView.scrollEnabled = YES; 
    mapView.zoomEnabled = YES; 
} 

- (void)closeMap 
{ 
    MKMapView * mapView = self.contentView.locationView.mapView; 
    mapView.scrollEnabled = NO; 
    mapView.zoomEnabled = NO; 
    CLLocationCoordinate2D coord = {self.event.eventLocation.latitude.floatValue, self.event.eventLocation.longitude.floatValue}; 
    mapView.region = MKCoordinateRegionMakeWithDistance(coord, 500, 500); 
} 

所以,我想要的是能當我按下按鈕,即可停止的MKMapView的是慣性滾動。

+0

我不能重現這個bug,你可以澄清以下幾個問題:1。 您測試設備的和模擬器嗎? 2. iOS版 – Numeral

+0

@Numeral,我在iOS 6.1.3設備上測試 – DemoniacDeath

回答

0

這似乎是MKMapView實現中的一個錯誤。我唯一的解決方案是在closeMap方法中重新創建地圖。

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

[self addMap]; 
} 

- (void)addMap { 

self.map = [[MKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
[self.view addSubview:self.map]; 
[self.view sendSubviewToBack:self.map]; 
} 


- (void)recreateMap { 

[self.map removeFromSuperview]; 
self.map = nil; 
[self addMap]; 
} 


- (void)openMap 
{ 
MKMapView * mapView = self.map; 
mapView.scrollEnabled = YES; 
mapView.zoomEnabled = YES; 
} 


- (void)closeMap { 

[self recreateMap]; 
MKMapView * mapView = self.map; 
mapView.scrollEnabled = NO; 
mapView.zoomEnabled = NO; 
CLLocationCoordinate2D coord = {self.event.eventLocation.latitude.floatValue, self.event.eventLocation.longitude.floatValue}; 
mapView.region = MKCoordinateRegionMakeWithDistance(coord, 500, 500); 
} 
+0

那麼,事情是我在closeMap和openMap上做了我的地圖的一些縮放動畫。我會嘗試使用這種方法,看看它是如何工作的。謝謝。 – DemoniacDeath

+0

這對我來說似乎不是一個好的解決方案。我想讓事情少一些。仍然真的想立即停止慣性滾動。 – DemoniacDeath

+0

我嘗試了不同的解決方案,並得出結論認爲這個bug可能是由地圖加載事件引起的(而不是地圖視圖減速)。希望這可以幫助。 – Numeral