MKPinAnnotationView отключает выделение/выделение, но не поднимает и не перетаскивает

У меня есть MKPinAnnotationView, который я хотел бы иметь возможность долго нажимать и перетаскивать, но не нажимать и выбирать. Иногда пользователь нажимает правильно (короткое касание булавки), и булавка становится выделенной (темнеет), а не поднимается и перетаскивается. Я использую перетаскивание, чтобы показать увеличительное стекло, поэтому это немного мешает, когда пользователь касается булавки и перетаскивает, но ничего не происходит.

Есть ли какой-то флаг, который я могу установить, чтобы булавка не выбиралась касанием и всегда перетаскивалась?

Я попытался установить следующие флаги:

annotationView.selected = YES;
annotationView.canShowCallout = NO;
annotationView.highlighted = NO;

Что не мешает выбору. Я также попытался переключить .selected на NO. Я полагаю, что мог бы переопределить -(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view, но я не уверен, что я мог бы добавить туда, чтобы обойти выбор. А функции -(BOOL)shouldSelectAnnotationView... нет.


person jmathew    schedule 29.08.2013    source источник
comment
Возможно, вам придется создать подкласс булавки, а затем прослушивать события касания и блокировать касания таким образом.   -  person Tony    schedule 30.08.2013
comment
@Tony Это то, что я подумал, что мне, возможно, придется сделать. Я надеялся, что есть более простой способ.   -  person jmathew    schedule 30.08.2013
comment
К сожалению, это не очень приятно. Я искал то же самое. Должен ли я поставить это как ответ на вопрос?   -  person Tony    schedule 30.08.2013
comment
@Tony Конечно, если у вас есть работающий пример подкласса, я соглашусь. Я надеялся на что-то простое, но если ответ сложный, пусть будет так.   -  person jmathew    schedule 30.08.2013


Ответы (1)


Скорее всего, вам придется создать подкласс булавки. Вот лучший пример, который я смог найти. Не могу написать, так как не сижу за компьютером. https://github.com/j4n0/callout

Удачи.

person Tony    schedule 29.08.2013