37

のaがタッチイベントを受信できるようにするだけでなく、別のアンダーレイ/オーバーレイも同じタッチイベントを受信するようUIGestureRecognizerにするにはどうすればよいですか?UIViewUIView

私が次のビューを持っているとしましょう-hierachie: ヒエラチエ落書きを見る

ビューA(青)とB(赤)は両方とも同じスーパービュー(灰色)のサブビューです。言い換えれば、彼らは両方とも兄弟であり、順序はそれらのどちらが他方をカバーするかを決定します。

オプション1:ビューB(赤)には、UIButtonサブビューとしてレギュラーがあります。オプション2:ビューA(青)には、UIButtonサブビューとしてレギュラーがあります。

説明のためにオプション1を指定します。ビューA(青)にはUITapGestureRecognizer(またはそれ以上の他のUIGestureRecognizers)が添付されています。UIButtonビューA(青)がその領域ですべてのタッチを受信するだけでなく、ビューA(青)がその領域でそれらのタッチを受信することを確認するための最もエレガントなアプローチは何でしょうUITapGestureRecognizerか?

可能であれば、解決策には、UIButton-classを拡張し、ボタン自体からイベントを手動で転送することは含まれません。ビューBには、ボタンだけでなく、より多くのコントロールが含まれていると想像してください。これらのコントロールはすべて、ビューAがのタッチを受信できるようにする必要がありますUIGestureRecognizer

両方がタッチを受ける限り、これらのビュー(AまたはB)のどちらが最初に来るかは気にしないので、2つのオプションを提供しました。

これまでの私のアプローチはすべて、突然行き止まりになりました。たぶん、カスタムレスポンダーチェーンは素晴らしい解決策でしょうか?UIKit//スタック全体にエレガントなソリューションが必要だと私は考え続けていUIEventます。UIResponder

4

1 に答える 1

20

これで試しましか?

cancelsTouchesInViewジェスチャが認識されたときにタッチがビューに配信されるかどうかに影響を与えるブール値。

@property(nonatomic) BOOL cancelsTouchesInView
于 2011-05-30T10:51:24.547 に答える