Подтвердить что ты не робот

UIPanGestureRecognizer на MKMapView?

Я хотел бы добавить некоторую логику, когда пользователь перемещается с видом карты i. е. он делает касание. Но когда я добавляю распознаватель жестов, и я хочу войти в контакт, ничего не происходит. Когда я пытаюсь использовать его в другом контроллере представления и добавлять распознаватель к виду контроллера, он работает нормально.

Здесь мой код (вид карты - это свойство делегата приложения, потому что мне нужно делать с ним что-то другое, даже если оно не видно):

- (void)viewDidLoad
{
    ...
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)];
    [appDelegate.mapView addGestureRecognizer:panGesture];
    [panGesture release];
}

- (void)showPan
{
    NSLog(@"pan!");
}

Я использую последнюю версию iOS 4.2.1

Спасибо за любой совет.

4b9b3361

Ответ 1

Хорошо, потому что никто не знал, мне пришлось потратить одну техническую поддержку Apple на это.; О)

Поскольку у MKMapView, очевидно, есть свои собственные распознаватели для взаимодействия с пользователем, вы должны придерживаться протокола UIGestureRecognizerDelegate и реализовать (BOOL)gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: следующим образом:

- (void)viewDidLoad
{
    ...
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)];
    panGesture.delegate = self;
    [appDelegate.mapView addGestureRecognizer:panGesture];
    [panGesture release];
}

- (void)showPan
{
    NSLog(@"pan!");
}

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

Затем он работает как шарм.