2

UITextFieldsを持つ単純なUIViewController派生コントローラーがあります。

また、IBを使用して、UIToolbarと2つのUIBarButtonItemを配置しました。Ctrlキーを押しながらドラッグして、ボタンにアクションを追加します。

- (IBAction)cancel:(id)sender { ... }
- (IBAction)save:(id)sender { ... }

コードを実行すると、アクションが呼び出されます。

問題:バックグラウンドでタップしてresignFirstResponderパラダイムを実装したかったので、ルートビューにUITapGestureRecognizerを追加しました。

- (void)viewDidLoad { 
    ...
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
    [self.view addGestureRecognizer:tap];
   }

ジェスチャレコグナイザーがある場合、UIBarButtonItemsのアクションは呼び出されません

どうすれば両方の方法で使用できますか?

これを実装するのに役立つ説明をありがとう。

4

1 に答える 1

5

別のビューを追加し、ルートビューではなくそのビューにジェスチャレコグナイザーを設定することで、問題を解決しました。

しかし、ジェスチャレコグナイザがUIBarButtonItemのアクションを「食べる」理由の説明を知りたいと思います。

于 2012-07-03T01:50:37.980 に答える