2017-02-21 8 views
0

更新:私は本当に間違った質問をしています。 最初のタップでマーカーが選択されます。私がやりたいことは、選択フェーズをスキップしてすぐにドラッグを開始することです。この選択は、長押しイベントを中断し、長押しイベントが選択を開始したいだけです。 "開始"を状態としてsetDragStateを呼び出そうとしましたが、動作しません。オブジェクトはドラッグ状態であることを忘れてしまい、それでも2番目のタップが必要です。選択をスキップし、MapKitマーカーで直接ドラッグする

ORIGINAL:

これは、私はしばらくの間、持っていた問題です。私はMKMapViewオブジェクトにドラッグ可能なマーカーを持っています。

ただし、ドラッグする前に初めてマーカーに2回触れています。これが一度行われると、その後のドラッグで、最初のタッチはドラッグを即座に開始します。それは第2タッチを必要とする最初の抗力だけです。

これは世界の終わりではありませんが、少し迷惑です。

最初のタッチもドラッグタッチになるようにする方法はありますか?

答えて

0

OK。私はこれを行う方法を考え出した。

私はマーカーを "あらかじめ選択"しています。これは、私の場合は大したことではないが、私が欲しいものを私に与える単純なコールアウトを行うことができないことを意味します。

更新日:コードまたはそれは発生しませんでした。

私は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) 
} 

最初が呼び出され、そして何かが選択をオフにしようとするたび秒が呼び出されます。

注:これは、単一のマーカーを持つマップにのみ適しています。

関連する問題