Это меня разочаровывает!MKMapView regionDidChangeAnimated не всегда называется!
Это будет называться большую часть времени, но затем перестанет отвечать на звонки. Он будет вызываться на экране вращением и двойным нажатием. Не до предела!
Помощь!
Это меня разочаровывает!MKMapView regionDidChangeAnimated не всегда называется!
Это будет называться большую часть времени, но затем перестанет отвечать на звонки. Он будет вызываться на экране вращением и двойным нажатием. Не до предела!
Помощь!
Я работал над некоторым кодом, который имел ту же проблему, и выяснилось, что проблема заключалась в подсмотре с UIGestureRecognizer
, который был добавлен в качестве подзаголовка в MKMapView
, а иногда они могли бы вызвать некоторые методы делегата, которые не должны срабатывать.
Поэтому убедитесь, что вы не добавляете subviews или что-либо в MKMapView
.
Надеюсь, это поможет.
Я перемещал карту в код, а затем оказывается, что я должен был назвать
[mapView setNeedsDisplay];
После!
На самом деле все еще не происходит! –
Я думаю, что эта проблема может иметь какое-то отношение к многопоточности.
У меня была такая же проблема сегодня утром. Я использую распознаватель жестов для захвата длинного события прессования, а затем добавляю булавку к карте. Если работает хорошо, но после нескольких раундов, регион действительно изменил метод остановки вызова.
Я пробовал несколько решений здесь, но никто не работает. Затем я вспомнил еще одну проблему, с которой я столкнулся, с многопоточным характером действий. Поэтому я пытаюсь переместить код, который управляет mapview при длительном нажатии на блок, который выполняется в основном потоке. И проблема решена.
мне удалось решить эту проблему, отключив жест распознаватель в touchesBeganCallback
self.tapInterceptor.touchesBeganCallback = ^(NSSet *touches, UIEvent *event) {
self.tapInterceptor.enabled = NO;
// do something
};
, и разблокирование его в методе делегата regionDidChangeAnimated
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
self.tapInterceptor.enabled = YES;
// do something
}
Всякий раз, когда водопроводная жест распознаватель добавляется к MapView, установка
recognizer.cancelsTouchesInView = NO;
заботится о f проблема, если ваша бизнес-логика допускает двойную обработку, если касается касания на карте (с помощью MKMapView И распознавателя жестов , который в последнее время мешал региону [Will, Did] ChangeAnimated :)
Я когда-нибудь получал решение этой проблемы ? – thekevinscott
Обсуждаются некоторые из этих вопросов на форумах Apple: https://devforums.apple.com/message/525411 –
Если вы используете пользовательский аннотационный просмотр, который выполняет собственную обработку касаний, ознакомьтесь с этим обсуждением: http: // www.iphonedevsdk.com/forum/iphone-sdk-development/79199-regiondidchangeanimated-not-always-firing.html –