2012-03-26 4 views
4

У моего приложения iPhone есть карта с большим количеством мест, которые пользователь может выбрать. Я хотел бы, чтобы он мог нажать одну из аннотаций, чтобы отобразить ее вид выноски, а затем снова, чтобы на самом деле выбрать его. Проблема заключается в том, что didSelectAnnotationView получает вызов только один раз.Выбор MapView Аннотация Дважды

Итак, как я могу определить выделение уже выбранной аннотации? В качестве альтернативы, как можно снять выделение аннотации, не скрывая вид выноски? Пользователь может обойти это, сняв выделение аннотации до того, как он снова ее выберет, но это неинтуитивно, и я хочу, чтобы он не делал этого.

+0

Если вы используете подкласс MKAnnotationView вы можете не обнаружить повторное нажатие на эту точку зрения в своем коде? (а не на «pin») – Diziet

+0

Я не в настоящее время подклассифицирую MKAnnotationView, хотя, я думаю, мог. Но я удивлен, что, похоже, это не простое решение. –

+0

У меня только что была скрипка, и теперь я вижу, что вы видите. Я нажимаю на аннотацию, и она исчезает, хотя нет шансов на второй щелчок, не переустанавливая соответствующий вывод. – Diziet

ответ

0

Аннотации не могут перемещаться из выбранного состояния в выбранное состояние.

Вместо этого вы можете использовать настраиваемое mkannotationview, где вы переопределяете setSelected, и устанавливаете UITapGestureRdcognizer в своем представлении и удаляете его, когда представление отменяется.

подключите распознанное устройство, чтобы сделать то, что вы хотите, для выбранного состояния.

7

Я только что нашел решение с кодом ниже:

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 
    [mapview deselectAnnotation:view.annotation animated:NO]; 

} 

Таким образом, выбранный аннотацию получает неустановленным, и вы можете выбрать его еще раз.

3

Для тех, кто с этой проблемой в '16, вот Swift версия:

mapView.deselectAnnotation(view.annotation!, animated: false)