我正在添加一些功能
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
和
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
我希望在更改地图区域时调用它。
当设备改变方向时,如何防止调用这些委托方法?
我正在添加一些功能
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
和
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
我希望在更改地图区域时调用它。
当设备改变方向时,如何防止调用这些委托方法?
当地图视图的框架发生变化时,会调用这些委托方法。由于自动布局约束或自动调整蒙版,框架可以在旋转时发生变化。因此,一种解决方案是保持地图视图框架不变。
您还可以尝试在界面方向更改时取消设置委托。
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
_mapView.delegate = nil;
}
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
_mapView.delegate = self;
}
添加属性BOOL didRotate
然后添加类似
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
self.didRotate = YES;
}
和
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated{
if(self.didRotate) return;
}
和
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
if(self.didRotate) {
self.didRotate = NO;
return;
}
}