UIGestureRecognizer
のUIView
がタッチイベントを受信できるようにするだけでなく、別のアンダーレイ/オーバーレイUIView
も同じタッチイベントを受信するようにするにはどうすればよいですか。
私が次のビューを持っているとしましょう-hierachie:
ビューA(青)とビューB(赤)は両方とも同じスーパービュー(灰色)のサブビューです。言い換えれば、彼らは両方とも兄弟であり、順序はそれらのどちらが他方をカバーするかを決定します。
オプション1:ビューB(赤)には、サブビューとして通常のUIButton
があります。オプション2:ビューA(青)には、サブビューとして通常のUIButton
があります。
説明のためにオプション1を指定します。ビューA(青)にはUITapGestureRecognizer
(またはそれ以上の他のUIGestureRecognizers)が添付されています。 UIButton
がその領域ですべてのタッチを受信するだけでなく、ビューA(青)がそのUITapGestureRecognizer
でそれらのタッチを受信することを確認するための、最もエレガントなアプローチは何でしょうか。
何らかの方法で可能であれば、ソリューションはUIButton
クラスを拡張し、ボタン自体からイベントを手動で転送することを含まないようにする必要があります。ビューBには、ボタンだけでなく、さらに多くのコントロールが含まれていると想像してください。これらのコントロールはすべて、ビューAがUIGestureRecognizer
のタッチを受信できるようにする必要があります。
両方がタッチを受け取る限り、これらのビュー(AまたはB)のどちらが最初に来るかは気にしないので、2つのオプションを提供しました。
これまでの私のアプローチはすべて突然行き止まりになりました。たぶん、カスタムレスポンダーチェーンは素晴らしい解決策になるでしょうか? UIKit
/UIEvent
/UIResponder
スタック全体に洗練されたソリューションが必要だと私は考え続けています。
this で試しましたか?
cancelsTouchesInViewジェスチャが認識されたときにタッチがビューに配信されるかどうかに影響を与えるブール値。
@property(nonatomic) BOOL cancelsTouchesInView