2

ネイティブ iOS 開発における非常に基本的な問題の解決策を探しています。

私はそのようなセットアップ UIViewController (フルスクリーン) ----> UIView-Parent (フルスクリーン) ----> UIView-Child (フルスクリーン) を持っています

UIView-Child はイベント UITapGestureRecognizer をサブスクライブし、UIView-Parent はイベント touchesBegan:withEvent をサブスクライブしました

画面上の任意の場所でタップが行われると、イベントは UIView-Child と UIView-Parent に送られ、両方が異なるイベントをリッスンします。

しかし、私が必要とするのは、すべてのイベントが UIView-Child 自体で停止され、UIView-Parent に伝播されないことです。

1 つの方法は、空の関数を使用して UIView-Child にすべてのイベント リスナーを実装することですが、もっと良い方法があるはずです。誰かがこれで私を助けることができますか?

私の質問には 2 番目の部分があります。UIView-Parent も UITapGestureRecognizer イベントの認識を開始した場合、UIView-Child がそれを実装したため、UIView-Parent に伝播しません。必要に応じて、この伝播を UIView-Child から UIView-Parent に発生させる方法はありますか?

4

1 に答える 1

3

親に触れないようにするために、子供に見せたときにこれを行うことができます。

[parentView setUserInteractionEnabled:FALSE];

完了したらこれを逆にします。これが最も簡単な方法だと思います。

また、ジェスチャレコグナイザーを使用する場合、タッチ送信を防止/許可するための良い方法は、そのジェスチャに適切な値を設定することです。このような:

[gestureRecognizer setDelaysTouchesBegan:TRUE];
[gestureRecognizer setDelaysTouchesEnded:TRUE];
[gestureRecognizer setCancelsTouchesInView:TRUE];

もちろん、値は、達成したいことによって異なります。

お役に立てれば。

乾杯!

于 2012-10-22T18:37:39.033 に答える