1

テンキーで 3 つにUIToolbarを追加しています。これについては、この投稿に従ってキーボードを閉じるためのキャンセル ボタンと完了ボタンがあります。これは、簡単に識別できる1 つに最適です。ただし、 three に同じコードを使用しようとしています。ここに私が持っているものがあります:inputAccessoryViewUITextFieldsUIToolbarUITextFieldUITextFields

- (void) viewDidLoad
{
    [super viewDidLoad];

    // weight, numberOfDrinks, and drinkingDuration are UITextFields set up in Storyboard.
    // I implemented the UITextFieldDelegate protocol in the .h file and set the UITextField's delegates to the owning ViewController in Storyboard.

    self.weight.delegate = self;
    self.numberOfDrinks.delegate = self;
    self.drinkingDuration.delegate = self;
}

- (void) textFieldDidBeginEditing:(UITextField *)textField {

    UIToolbar *doneToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    doneToolbar.barStyle = UIBarStyleBlackTranslucent;

    // I can't pass the textField as a parameter into an @selector
    doneToolbar.items = [NSArray arrayWithObjects:
                         [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelKeyboard:)],
                         [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                         [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithKeyboard:)],
                         nil];

    [doneToolbar sizeToFit];

    textField.inputAccessoryView = doneToolbar;
}

- (void) cancelKeyboard: (UITextField *) textField {

    textField.text = @"";

    [textField resignFirstResponder];
}

- (void) doneWithKeyboard: (UITextField *) textField {

    [textField resignFirstResponder];
}

cancelKeyboard メソッドと doneWithKeyboard メソッドに必要な textField パラメータが渡されていないため、「認識されないセレクタがインスタンスに送信されました」というエラーが発生します。これを適切に実装する方法はありますか?

ありがとう!

ベン

4

2 に答える 2

1

現在のビュー コントローラーでキーボードを閉じたいだけの場合は、ビュー コントローラーのビュー プロパティの endEditing メソッドを呼び出すことができます。

[self.view endEditing];
于 2013-06-12T10:18:38.020 に答える
1

use globle object in .h file UITextField *SelectedTextField; // In did begin editing method define SelectedTextField = textField; Then use it on your method to resign or show.

It would help for you.

于 2013-06-12T08:44:14.607 に答える