2017-02-10 4 views
0

Я разрешаю пользователям нажимать в любом месте экрана, а также позволяю им использовать аннотации для отображения текста, связанного с аннотацией.Объект c mkmapview в UITapGestureRecognizer, как я могу проверить, прослушиваются ли они аннотацией

Чтобы разрешить им нажимать в любом месте экрана, у меня есть установка tapgesturerecoginzer.

Проблема заключается в том, что при нажатии на аннотацию событие tapgesturerecognizer происходит до didSelectAnnotationView, и поэтому я выполняю функцию tapgesturerecognizer, когда я этого не хочу.

Могу ли я как-то проверить в указателе-автоответчике, если они написали аннотацию?

ответ

0

Решение:

В моем заголовке (.h) Я добавил делегат:

@interface myVC : UIViewController <UIGestureRecognizerDelegate> 

В .m:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]; 
[self.mapView addGestureRecognizer:tap]; 
tap.delegate = self; 

Примечание делегатом утверждение, что Nirav сказал, должно было быть добавлено

затем я добавил код Нирава, но изменил оператор IF:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if (([touch.view isKindOfClass:[MKPinAnnotationView class]]) || ([touch.view isKindOfClass:[MKAnnotationView class]])) 
    { 
    return NO; 
    } 
    return YES; 
} 
1

У меня есть та же проблема с LongGesture вы можете использовать UIGestureRecognizerDelegate, чтобы предотвратить действие жестов вызова.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isKindOfClass:[MKPinAnnotationView class]]) 
    { 
     return NO; 
    } 
    return YES; 
} 

Примечание: Не забыли установить делегата с tapGesture.

+0

Огромное спасибо, это положило меня на правильный путь, но мне пришлось добавить дополнительный тест для MKAnnotationView, чтобы он работал, поскольку MKPinAnnotationView не распознавался, когда я постучал по аннотации. См. Расширенный код ниже. – Guy

Смежные вопросы