2013-09-29 4 views
0

Я работаю над приложением, которое использует MKMapView для отслеживания прогресса пользователя, и я подумал, что смогу использовать метод iOS 7 Apple Maps для использования кнопки выноски, чтобы начать отслеживание. Однако в моем случае пользователь остается на одном и том же представлении, поэтому мне нужно изменить кнопку, чтобы указать, что отслеживание уже выполняется.Редактирование rightCalloutAccessoryView при прослушивании аннотации

Я создал простую анимацию и добавил ее к слою кнопки при нажатии кнопки. Работает отлично. Проблема возникает, если пользователь отклоняет, а затем возвращает выноску. Несмотря на код в didSelectAnnotation, чтобы вернуть анимацию на слой, представление, которое представлено, не имеет анимации. Согласно этому сообщению:

UIButton Not Loading Properly For MKAnnotationView

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

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

Edit:

Я попытался добавить анимацию к кнопке в viewForAnnotation, а затем делая паузу его, намереваясь возобновить его, когда кнопка прослушиваются. Однако, когда кнопка нажата, у нее больше нет анимации, - похоже, картакит ее убрал. Он есть в didSelectAnnotation, но где-то между ними он исчезает.

Я могу добавить анимацию в весь MKAnnotationView, но это не ведет себя так, как предполагалось, - вся анимация, включая выноску, выглядит очень странно. Кроме того, приостановка анимации на этом представлении препятствует отображению выноски.

Все, что я пытаюсь сделать, это сделать изображение кнопки «импульсом», чтобы указать, что оно уже было использовано, и отслеживание продолжается, оставляя его доступным для просмотра, поэтому пользователь знает, что он может снова нажать на него остановить отслеживание.

У меня такое чувство, что я СОЛ здесь ... пожалуйста, кто-нибудь, докажите, что я неправ!

ответ

0

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

http://blog.asynchrony.com/2010/09/building-custom-map-annotation-callouts-part-1/ http://blog.asynchrony.com/2010/09/building-custom-map-annotation-callouts-part-2/

Смежные вопросы