Я пытаюсь реализовать свой собственный распознаватель жестов в дополнение к уже используемому MKMapView. Прямо сейчас я могу нажать на карту и установить пин-код. Это поведение реализовано моим UITapGestureRecognizer. Когда я нажимаю на контакт, который уже существует, мой распознаватель жестов ничего не делает, но вместо этого отображается пузырь выноски этого контакта. UIGestureRecognizerDelegate выглядит следующим образом:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if (gestureRecognizer == self.tapRecognizer)
{
bool hitAnnotation = false;
int count = [self.mapView.annotations count];
int counter = 0;
while (counter < count && hitAnnotation == false )
{
if (touch.view == [self.mapView viewForAnnotation:[self.mapView.annotations objectAtIndex:counter]])
{
hitAnnotation = true;
}
counter++;
}
if (hitAnnotation)
{
return NO;
}
}
return YES;
}
Это отлично работает. Моя единственная проблема - пузырьки выноски контактов и двойное нажатие. Обычно для увеличения используется двойной тап. Это все еще работает, но в дополнение к этому я также получаю новый пин-код. Есть ли способ избежать этого?
Другая проблема возникает с пузырьком выноски булавки. Я могу открыть пузырь, нажав на булавку, не устанавливая новый штифт в этом месте (см. Код выше), но когда я хочу закрыть пузырь, нажав на него, устанавливается другой штифт. Моя проблема в том, что я не могу проверить с помощью touch.view, нажал ли пользователь на всплывающую подсказку, потому что, насколько я знаю, это не обычный UIView. Любые идеи или обходные пути для этой проблемы?
Спасибо