2016-07-19 1 views
2

Mapbox iOS SDKのMGLMapViewで非常に基本的なものを実現しようとしています。スクロールを有効にしてMGLMapViewをレンダリングして、パンジェスチャでビューを移動できるようにします。ビューが移動されたかどうかを検出したいので、このビューにパンジェスチャ認識機能を追加しました。パンジェスチャーがマップボックスに手を触れないMGLMapView

下記のスクリーンショットでわかるように、インターフェースビルダーを使用しています。

interface builder screenshot

私は確かにいつでも1は、地図上のビューを移動しようとするとトリガーされIBActionにジェスチャー認識をリンク。ただし、ビューは移動されません。つまり、タッチイベントはもうMGLMapViewに転送されません。もちろん、私はパンのジェスチャー・リコジンガーのオプション「表示されたタッチをキャンセルする」のチェックを外しました。ちょうど私がパンのジェスチャーレコグナイザーを自分のコードのIBOubletにリンクしているので、メンバーcancelsTouchesInViewをfalseに設定することができますが、何も変わらないことを確認してください。

同様の方法でタップジェスチャ認識(2タッチ)を追加しようとしたところ、関連するIBActionがトリガされ、タッチがマップビューに転送されます(マップビューはダブルタップで拡大されます)。

ここで私はパンジェスチャ認識器で何が欠けていましたか?

ありがとうございました。

答えて

0

私は、新しいパンジェスチャ認識機能をマップビューに取り付けるのではなく、既存のパンジェスチャ認識機能に新しいターゲットを追加しました。

for gestureRecognizer in self.mapView.gestureRecognizers! { 
    if let _ = gestureRecognizer as? UIPanGestureRecognizer { 
     gestureRecognizer.addTarget(self, action: #selector(self.panOnMap)) 
     break 
    } 
} 

次に、デフォルトパンニングと私のメソッドpanOnMapが呼び出されます。

ハックのように見えるので、私はこの解決策にまだ十分満足していません。さらに、私はそれらが地図ビューに添付された2つの汎ジェスチャー認識機能であることに気付き、どちらを対象にすべきかわかりません。

関連する問題