2016-12-11 9 views
0

KCFloatingActionButton(または類似のもの)をマップボックスMGLMapViewに実装したいが、ボタンアクションを動作させることができない。ボタンは最初のタッチを認識し、色は変わりますが、それ以外は何も起こりません。私はマップがタッチを盗んでいるのか、それとも何らかの理由で優先順位が高いのかどうかはわかりません。Mapboxでカスタムコントロールを使用する方法MGLMapView

ビュー階層を調べるとUIButtonが表示され、関連するUIViewがマップの上にあるため、私は迷っています。私はそれが実際のUIButtonオブジェクトと同様にボタンのビューを使用していたかもしれないと思ったが、地図上のシンプルなUIViewにジェスチャーレコーダーを付けることができた。ただし、マップはまだビューをドラッグアンドタップする)。また、バニラUIButtonオブジェクトは正常に動作します。

編集:MKMapViewにスワップされたビューとボタンが正常に機能します。

答えて

0

毎日新しいことを学びます。ちょうどそれが昨日だったらいいのに。

スーパービューにはサブビューが含まれています。私の場合、MGLMapViewにはKCFloatingActionButton(UIViewから派生したもの)が含まれています。スーパービューにはジェスチャー認識機能が付属しています。私の場合、mapViewはマップに通常関連付けられている通常のタップとスワイプを持っています。デフォルト動作では、これらのジェスチャがサブビューによってブロックされないようになっています。そのため、単にボタンが存在してもスーパービューはジェスチャを認識できません。 UIGestureRecognizerDelegateを採用し、実装することにより

override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { 
    return false 
} 

私は選択の私「ボタンが」スーパービューから派生するジェスチャーを処理する方法を扱うことができます。私はそれを読んでUIButtonsは、単一のタップのこの動作にデフォルトが、私のUIViewベースのボタンはありません。

関連する問題