Это расстраивает меня!!!
Он будет называться большую часть времени, но затем перестанет отвечать на пинча. Он будет вызываться на экране вращением и двойным нажатием. Не для того, чтобы ущипнуть!
Help!
Это расстраивает меня!!!
Он будет называться большую часть времени, но затем перестанет отвечать на пинча. Он будет вызываться на экране вращением и двойным нажатием. Не для того, чтобы ущипнуть!
Help!
Я работал над некоторым кодом, который имел ту же проблему, и выяснилось, что проблема заключалась в том, что subview с UIGestureRecognizer
был добавлен в качестве подзаголовка в MKMapView
, а иногда они вызывали бы некоторые методы делегата, чтобы не срабатывать.
Поэтому убедитесь, что вы не добавляете subviews или что-либо в MKMapView
.
Надеюсь, что это поможет.
Я перемещал карту в код, а затем мне казалось, что мне нужно позвонить
[mapView setNeedsDisplay];
После
Я думаю, что эта проблема может иметь какое-то отношение к многопоточности.
У меня была такая же проблема сегодня утром. Я использую распознаватель жестов для захвата длинного события прессования, а затем добавляю булавку к карте. Если работает хорошо, но после нескольких раундов, регион действительно изменил метод остановки вызова.
Я попробовал несколько решений здесь, но никто не работает. Затем я вспомнил еще одну проблему, с которой я столкнулся, с многопоточным характером действий. Поэтому я пытаюсь переместить код, который управляет mapview при длительном нажатии на блок, который выполняется в основном потоке. И проблема решена.
Мне удалось решить эту проблему, отключив распознаватель жестов в пределах touchhesBeganCallback
self.tapInterceptor.touchesBeganCallback = ^(NSSet *touches, UIEvent *event) {
self.tapInterceptor.enabled = NO;
// do something
};
и повторное включение его в методе domainDidChangeAnimated delegate
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
self.tapInterceptor.enabled = YES;
// do something
}
Всякий раз, когда распознающий знак жесты добавляется в карту, установка
recognizer.cancelsTouchesInView = NO;
заботится о проблеме, если ваша бизнес-логика допускает двойную обработку, если касается касания на карте (с помощью MKMapView И распознавателя жестов который в последнее время мешал региону [Will, Did] ChangeAnimated:)