2

我正在添加一些功能

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated

我希望在更改地图区域时调用它。

当设备改变方向时,如何防止调用这些委托方法?

4

2 回答 2

-1

当地图视图的框架发生变化时,会调用这些委托方法。由于自动布局约束或自动调整蒙版,框架可以在旋转时发生变化。因此,一种解决方案是保持地图视图框架不变。

您还可以尝试在界面方向更改时取消设置委托。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    _mapView.delegate = nil;
}


-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    _mapView.delegate = self;    
}
于 2013-06-28T15:48:10.353 回答
-1

添加属性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;
    }
}
于 2013-06-28T15:38:38.290 回答