2011-03-21 30 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

相關問題