2017-02-21 18 views
0

ОБНОВЛЕНО: Я действительно задаю неправильный вопрос. Первый ответвитель выбирает маркер. То, что я хочу сделать, - пропустить фазу выбора и немедленно начать перетаскивание. Выбор прерывает длительное событие пресса, и я просто хочу, чтобы длинное событие прессования начало выбор. Я попытался вызвать setDragState с «началом» в качестве состояния, но это не работает. Объект забывает, что он находится в состоянии перетаскивания, и вам все еще нужен этот второй ответ.Пропуск выбора и переход непосредственно к перетаскиванию в MapKit Marker

ORIGINAL:

Это вопрос, я имел некоторое время. У меня есть перетаскиваемый маркер в объекте MKMapView.

Однако, прежде чем я смогу перетащить его, он всегда занимает два (2) контакта с маркером. Как только это было сделано один раз, при последующем перетаскивании первое касание инициирует перетаскивание немедленно. Это только первое сопротивление, требующее второго касания.

Это еще не конец света, но это немного раздражает.

Любые идеи о том, как сделать так, чтобы первое касание также стало касанием перетаскивания?

ответ

0

OK. Я понял, как это сделать.

I «предварительный выбор» маркера. Это означает, что я не могу сделать для нее простое указание, которое в моем случае не имеет большого значения, но оно дает мне то, что я хочу.

ОБНОВЛЕНИЕ: Код или этого не произошло.

Я добавил несколько функций MKMapViewDelegate:

/* ################################################################## */ 
/** 
This responds to the map's region being changed. 
We simply use this to "preselect" the marker, so there's no need for two taps. 

- parameter mapView: The MKMapView object that contains the marker being moved. 
- parameter animated: True, if the change was animated. 
*/ 
func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 
    self.mapView.selectAnnotation(self._meetingMarker, animated: false) 
} 

/* ################################################################## */ 
/** 
This responds to the marker's selection turning off. 
We simply use this to "preselect" the marker, so there's no need for two taps. 

- parameter mapView: The MKMapView object that contains the marker being moved. 
- parameter didDeselect: The annotation view (it's ignored. We always select our marker). 
*/ 
func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) { 
    self.mapView.selectAnnotation(self._meetingMarker, animated: false) 
} 

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

ПРИМЕЧАНИЕ: Это полезно только для карты с одним маркером.