Повторное распознавание жестов на MKMapView - iPhone - PullRequest
1 голос
/ 13 марта 2011

У меня есть mapView, в моем mapView вы можете увеличить изображение с помощью двойного касания, сжатия, UIButton (+ и -) и UISlider. Теперь ... Я хочу распознать двойное касание и пинч, чтобы обновить позицию UISlider ... Я использую переменную NSInteger с именем zoomLevel, чтобы сделать это.

Я пробовал два пути, но не работает:

1)

    UIGestureRecognizer *recognizer;


// taps
recognizer = [[ UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(handleTap)];
tapGR = (UITapGestureRecognizer *)recognizer;
tapGR.numberOfTapsRequired = 2;
tapGR.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapGR]; 
[recognizer release];

2)

- (void)touchesEnded:(NSSet *)touches withEvent: (UIEvent *) event{
    UITouch* touch = [[event allTouches] anyObject];
    NSLog(@"2 taps");
    if(touch.tapCount == 2 ){
        NSLog(@"2 taps");
        [self zoomLevelWithMapView:mappa];
    }

Может кто-нибудь мне помочь? Лучше с практическим примером Спасибо.

1 Ответ

1 голос
/ 13 марта 2011

Распознавание изменения масштаба увеличения с помощью UIGestureRecognizer является плохой идеей.

Лучше использовать метод делегата MKMapView, который вызывается, когда регион, отображаемый представлением карты, собирается измениться.

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated {
    // detect zoom scale and update slider
}

Используйте метод из этого ответа , чтобы определить масштаб увеличения.

...