私のアプリケーションでは、ユーザがUIImageView
というマップ(.PNG)を見ることができるUIScrollview
があります。 UIScrollView
は、マップを囲んでパンとスクロールを処理するために使用されます。スクロールビュー内の画像ビュー内のuibuttonをタップ
地図上に余分な興味のあるポイント(ボタン)をタッチしたときに「追加」できるようにしたいのですが、これを行うにはUIScrollView
にタップリスナーを追加しました。上の場所に(滞在を
[plattegrondImageview addSubview:plattegrondPunt];
そのように要素のスクロールをきれいに沿って画像を:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
[myScrollview addGestureRecognizer:tap];
タップが登録されているとき、私はUIButtonを作成し、UIScrollView
の内側にこのボタンをUIImageView
を追加します与えられた座標)。ここまでは順調ですね。
しかし、今ではユーザーが「ボタン」をタップすることができます(たとえば、Popover画面を開いてコメントを入力するなど)。
私はタップをリッスンするためにボタンにターゲットを追加した:問題のために今
[poi addTarget:self action:@selector(puntTap:) forControlEvents:UIControlEventTouchUpInside];
:
ユーザータップのボタンの上に、セレクタ(puntTap)が正しく発射されるたびにUIScrollview
のメインタップジェスチャーも発動します。
popover
ビューが開かれているだけでなく、余分なUIButton
要素が画面に表示されます。
UIScrollview
もタップを登録するのは論理的ですが、この場合は望ましくない動作です。ユーザーがscrollview
のUIButton
をタップすると、scrollview
自体は応答しないでください。 >UIScrollview
----->UIImageView
---------->UIButton
私は既に持っている -
:レイヤーを可視化するために
スクロールビューの次のプロパティを有効にしました。
myScrollview.userInteractionEnabled = YES;
myScrollview.canCancelContentTouches = YES;
myScrollview.delaysContentTouches = YES;
私はそれがタップされるボタンでないかどうかを確認するために、(UIScrollview
のタップジェスチャー付き)hittestような何かを行うことができると思います - しかし、おそらく誰かが「クリーン」ソリューションを持っていますか?
がを要約(何が、私はセットアップ画面を持っている方法については不明である場合は、そう言ってください):ユーザーがUIButton
をタップすると、scrollview
のGestureRecognizer
も発射!
残念ながら、このトリックをやっていないようですが、スクロールビュー/タップはまだ起動します。私はボタンでそれを設定しましたが、実際にはタッチも(タップ)(ボタンはビュー最後にダウンです)を得る '上'のビュー – YDL