0

私は、DetailViewControllerこのコードを含む実装ファイルを持っています:

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController <UITextFieldDelegate>

{
    __weak IBOutlet UITextField *nameField;
    __weak IBOutlet UITextField *numberField;
}

@end

ストーリーボードで、 を に設定し、両方の のデリゲートを に接続しViewControllerました。my の実装ファイルには、テキスト フィールド以外の場所をタップしたときにキーボードを閉じるための次のメソッドが含まれています。DetailViewControllerUITextFieldDetailViewControllerDetailViewController

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

このメソッドは呼び出されませんが、ブレークポイントを使用してこれをテストしました。何がうまくいかないのですか?

4

3 に答える 3

1

rdelmarは正しいです。ユーザーがキーボードの外側をクリックしたときではなく、ユーザーがキーボードの「return」キーを押したときにのみ、コードがトリガーされます。

探している動作を取得するには、テキストフィールドの背後のビューにTap Gesture Recognizerを追加してから、TapGestureRecognizer[nameField resignFirstResponder];[numberField resignFirstResponder];コードを挿入します。

于 2012-10-05T16:01:58.507 に答える
0

なぜあなたは使用するの_weakですか?それを除く。

あなたの.mファイルで(でviewDidLoad):

[nameField setDelegate:self];

他のテキストフィールドについても同じです。

于 2012-10-05T15:56:43.983 に答える
0
  • サンプルプロジェクトを作成しました
  • ビューコントローラーに追加
  • テキストフィールドを追加し、そのデリゲートを接続しました
  • ビューコントローラーにコードを書く

     (BOOL)textFieldShouldReturn:(UITextField *)textField
     {
        [textField resignFirstResponder];
        return YES; 
     }
    

それは正常に機能しました。弱いものを試してみましたが、インスタンス変数とプロパティの両方としても機能しました

したがって、どこにでも再割り当てしているかどうかを確認し、ブレークポイントを使用してメモリが同じであることを確認してください

于 2012-10-05T15:57:25.793 に答える