Я пытаюсь реализовать свой собственный распознаватель жестов в дополнение к тому, который уже используется 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. Есть идеи или способы решения этой проблемы?
Спасибо