mapView: annotationView: calloutAccessoryControlTapped: дает мне UITouchesEvent вместо MKAnnotationView?

Я пытаюсь реализовать метод mapView: annotationView: calloutAccessoryControlTapped: в моем приложении для iPhone. Метод вызывается, но когда я пытаюсь использовать переданное ему представление

Аннотация * temp = (Аннотация *) view.annotation;

приложение вылетает с ошибкой.

2011-03-29 12: 51: 54.453 Flora [3316: 207] * Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: '- [аннотация UITouchesEvent]: нераспознанный селектор отправлен в экземпляр 0x6d13410'

В отладчике кажется, что представление является UITouchesEvent, а не MKAnnotationView.

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


person Rich    schedule 29.03.2011    source источник


Ответы (1)


В методе viewForAnnotation при настройке вспомогательного представления выноски выполняете ли вы addTarget для кнопки? (Если да, не делайте этого.)

[rightButton addTarget:self 
    action:@selector(mapView:annotationView:calloutAccessoryControlTapped:) 
    forControlEvents:UIControlEventTouchUpInside];

Не добавляйте метод делегата в качестве цели для кнопки. Метод делегата будет вызываться автоматически с правильными значениями параметров при нажатии аксессуара выноски (если был установлен делегат представления карты). Если у вас есть строка, подобная приведенной выше, в viewForAnnotation, удалите ее.

person Community    schedule 29.03.2011
comment
БАМ, вот в чем проблема! Это также объясняет, почему метод вызывается дважды. Большое спасибо! :-) - person Rich; 29.03.2011