2011-03-21 84 views
0

所以我有我的自我一个难题。我正在更改代码中的MKMapView的区域,它可以工作,但它会调用mapView:regionDidChangeAnimated,如果用户是实际移动地图的用户,则会取消我的检查。所以,我很难想出如何在代码中手动设置区域,同时检查用户是否改变了它(这也是凌晨2:30,我的大脑并没有真正合作......)。总之,这里是我的代码:Objective-C for Dummies:如何在不调用mapView的情况下更改区域:regionDidChangeAnimated?

- (void)displayMyLocation:(CLLocation *)location { 
    if (!userChangedRegion) { 
     MKCoordinateSpan span; 
     MKCoordinateRegion region; 

     span.latitudeDelta = 0.02; 
     span.longitudeDelta = 0.02; 

     region.center = location.coordinate; 
     region.span = span; 

     [map setRegion:region]; 
    } 
} 

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { 
    userChangedRegion = YES; 
} 

提前感谢!

回答

2

如果你只是想跳过设置userChangedRegion更改区域,你可以使用第二个变量programChangedRegion来跟踪你是否正在设置的区域。

例如:

 programChangedRegion = YES; 
     [map setRegion:region]; 
    } 
} 

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { 
    if (programChangedRegion == YES) { 
     programChangedRegion = NO; 
    } else { 
     userChangedRegion = YES; 
    } 
} 
+0

谢谢!这工作完美。 – Gup3rSuR4c 2011-03-21 22:16:57

相关问题