Метод делегата tapOnCalloutAccessoryControl не вызывается в представлении аксессуара. Нажмите в представлении карты mapbox.

Я работаю над своим приложением, используя mapbox sdk (MapBox iOS SDK 1.0. 3) и установил платформу, выполнив шаги, описанные здесь.

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

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

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

- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation

и

- (void)tapOnCalloutAccessoryControl:(UIControl *)control forAnnotation:(RMAnnotation *)annotation onMap:(RMMapView *)map

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

Я попытался использовать [self mapView:mapView layerForAnnotation:annotations];, затем я заставил компилятор войти в этот метод-

- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation

но все же метод - - (void)tapOnCalloutAccessoryControl:(UIControl *)control forAnnotation:(RMAnnotation *)annotation onMap:(RMMapView *)map не вызывается, когда я пытаюсь щелкнуть правый вспомогательный вид аннотации.

Я добавил #import "MapBox/MapBox.h" в свой файл. мне нужно добавить любой другой файл, чтобы эта функция работала? и я отлаживал с помощью точек останова, но управление никогда не входит в эти два метода, как описано выше.

  1. Я использую файл Mbtile и использую его как автономную карту в своем приложении.
  2. Xcode5, ios7 Пожалуйста, ребята, помогите мне решить эту проблему. Спасибо!

person sac    schedule 19.12.2013    source источник


Ответы (1)


Вы уверены, что настраиваете mapView.delegate? Это методы обратного вызова делегата. Вы можете сделать это либо в коде, либо в XIB, если таким образом добавите представление карты.

person incanus    schedule 20.12.2013
comment
это была ошибка, которую я сделал в своем коде. спасибо за совет. я уже добавил это--› @interface ViewController : UIViewController‹RMMapViewDelegate›, но забыл добавить this-mapView.delegate=self; в моем файле viewcontroller.m, как указано вами. Теперь он работает как шарм. Большое спасибо. - person sac; 21.12.2013
comment
У меня есть еще один вопрос в связи с этим - я использую несколько файлов mbtile в качестве слоя в представлении карты по умолчанию, теперь мой жест перестает работать на втором слое, который я добавляю над слоем по умолчанию. что мне делать для этой проблемы. почему это происходит. Где-то читал в обсуждениях, что mapbox позволяет взаимодействовать только с одним слоем одновременно, но как только я добавлю слой, как включить взаимодействие на новом слое и остановить взаимодействие на слое по умолчанию? Пожалуйста, помогите мне в этом. Спасибо за вашу мгновенную помощь !! - person sac; 21.12.2013
comment
Одноуровневое взаимодействие относится к встроенному взаимодействию в формате UTFGrid, обычно закодированному с помощью TileMill, и не относится к жестовому взаимодействию обычных UIView объектов. Когда вы говорите, что ваш жест перестает работать, означает ли это, что он просто не регистрируется, или что он сначала работает, а затем возникают проблемы? Не могли бы вы предоставить немного больше информации о том, что происходит? - person incanus; 31.12.2013