2013-07-02 151 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