首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止在设备轮换时调用MKMapViewDelegate方法

防止在设备轮换时调用MKMapViewDelegate方法
EN

Stack Overflow用户
提问于 2013-06-28 23:31:00
回答 2查看 353关注 0票数 2

我正在添加一些功能

代码语言:javascript
复制
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated

代码语言:javascript
复制
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated

我希望在更改地图区域时调用此方法。

如何防止这些委托方法在设备更改其方向时被调用?

EN

回答 2

Stack Overflow用户

发布于 2013-06-28 23:38:38

添加属性BOOL didRotate

然后添加如下内容

代码语言:javascript
复制
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    self.didRotate = YES;
}

代码语言:javascript
复制
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated{
    if(self.didRotate) return;
}

代码语言:javascript
复制
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
    if(self.didRotate) {
        self.didRotate = NO;
        return;
    }
}
票数 -1
EN

Stack Overflow用户

发布于 2013-06-28 23:48:10

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

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

代码语言:javascript
复制
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    _mapView.delegate = nil;
}


-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    _mapView.delegate = self;    
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17368385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档