3

iBooksと同じように、タップでメニューを表示/非表示にする良い方法を見つけようとしています。これを行うためにUITapGestureRecognizerを設定しましたが、残念ながら、画面上のどのボタンも機能しないことを意味します。私は私が使うことができることを知っています

tapRecognizer.cancelsTouchesInView = NO;

タッチを通過させるためですが、もちろん、両方のことが起こり、メニューの表示/非表示をキャンセルすることはできません。

UITapGestureRecognizerが特定のボタンまたはアクションで発生しないようにする方法はありますか?それとも、これを一般的に行うためのより良い方法はありますか?

あなたが私に与えることができるどんな助けにも前もって感謝します!

:-ジョー

4

2 に答える 2

5

Joe のソリューションを理解するために少しのコードが必要な場合は、最初に UIGestureRecognizerDelegate プロトコル (つまり@interface YourViewController : UIViewController <UIGestureRecognizerDelegate>) を実装する必要があります。

UIGestureRecognizerDelegate プロトコルを実装するクラスでは、 を実装する必要があります- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch。そこで、 touch.view がボタンかどうかを確認できます。私の実装では a のみを使用しましたreturn !([touch.view isKindOfClass:[UIButton class]]);が、タップ認識エンジンをトリガーしたくない他のタッチ対応コンポーネントがある場合は、これを拡張する必要がある場合があります。

于 2010-10-22T16:22:57.003 に答える
3

私はそれを解決しました(または他の誰かが私のために解決しました)ので、あなたと共有したいと思いました:

touch.view がボタンの 1 つである場合は、デリゲート メソッドのgestureRecognizer:shouldReceiveTouch: から NO を返します。

于 2010-08-01T09:05:27.597 に答える