2012-02-02 27 views
6

Tôi có một ứng dụng với một MKMapView và mã được gọi là mỗi lần bản đồ thay đổi vị trí (trong regionDidChangeAnimated). Khi ứng dụng tải ban đầu, regionDidChangeAnimated được gọi trên chảo (swipes), pinches, taps và buttons cập nhật rõ ràng tọa độ bản đồ. Sau khi tải các chế độ xem khác và quay lại bản đồ, regionDidChangeAnimated chỉ được gọi cho các lần nhấn và các nút cập nhật bản đồ một cách rõ ràng. Xoay bản đồ và pinches không còn gọi regionDidChangeAnimated.MKMapView Not Calling regionDidChangeAnimated trên Pan

Tôi đã xem xét điều này stackoverflow post không giải quyết được vấn đề này. Các bài đăng trên diễn đàn trên devforumsiphonedevsdk cũng không hoạt động. Có ai biết nguyên nhân gây ra vấn đề này không? Tôi không thêm bất kỳ phần phụ nào vào MKMapView.

Trả lời

3

Tôi không muốn bước đầu làm theo cách này, nhưng nó xuất hiện để làm việc với không có vấn đề cho đến nay (lấy từ devforums gửi trong câu hỏi):

Thêm UIGestureRecognizerDelegate để tiêu đề của bạn. Bây giờ thêm một tấm séc cho số phiên bản ... Nếu chúng ta đang ở trên iOS 4, chúng tôi có thể làm điều này:

if (NSFoundationVersionNumber >= 678.58){ 

     UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureCaptured:)]; 
     pinch.delegate = self;   
     [mapView addGestureRecognizer:pinch]; 

     [pinch release]; 

     UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureCaptured:)]; 
     pan.delegate = self; 
     [mapView addGestureRecognizer:pan]; 

     [pan release]; 
} 

Thêm phương pháp đại biểu để xử lý các cử chỉ:

#pragma mark - 
#pragma mark Gesture Recognizers 

- (void)pinchGestureCaptured:(UIPinchGestureRecognizer*)gesture{ 
    if(UIGestureRecognizerStateEnded == gesture.state){ 
     ///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated]; 
    } 
} 

- (void)panGestureCaptured:(UIPanGestureRecognizer*)gesture{ 

    if(UIGestureRecognizerStateEnded == gesture.state){ 
     ///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated]; 
    } 
} 

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ 
    return YES; 
} 

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch: (UITouch *)touch{ 
    return YES; 
} 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
    return YES; 
} 
+0

sẽ làm việc này trên Còn iOS 5 thì sao? –

+0

Có, tôi gặp sự cố với iOS 4 và iOS 5 và nó hoạt động trên cả hai. – brendan