0

これは奇妙な問題ですが、これを解決する方法に当惑しています -UITableViewカスタム UITableViewCells を持っています。それぞれUITableViewCellに 2 つUITextFieldsあり、それぞれがイベントUITextFieldを処理するデリゲートにリンクされています。textFieldDidEndEditingこれは、1 つのインスタンスを除いて完全に機能します。

問題

UITextField画面には「保存」ボタンもあり、ユーザーが編集して、画面の他の場所をクリックせずに「保存」ボタンを直接クリックすると、問題が発生します。このようなイベントでは、イベントのsaveAction前にメソッドが呼び出さtextFieldDidEndEditingれ、その結果、ユーザーの最後の編集が失われます。

NSLog ステートメントを使用してデバッグしようとしたところ、textFieldDidEndEditing実際に呼び出されている間に、saveActionイベントの後に呼び出されていることがわかりました。

textFieldDidEndEditingからイベントを呼び出すことを考えましたが、どれが編集されsaveActionているのか分からないため、意味がありませんでした。UITextField

どんな提案でも大歓迎です。

4

1 に答える 1

1

ビュー コントローラーで –textFieldDidBeginEditing: デリゲート メソッドが呼び出されたときにアクティブになるテキスト フィールドをメモしておくことができます。

アクティブなテキスト フィールドを指すプロパティを割り当ててから、-saveAction で -resignFirstResponder を送信します。

ヘッダ:

@property (nonatomic, assign) UITextField * editingTextField;

m ファイル:

-(void)textFieldDidBeginEditing:(UITextField *)textField{
self.editingTextField = textField;
}

-saveAction{
if(self.editingTextField)
    [self.editingTextField resignFirstResponder];

 //continue implementation
}
于 2011-06-16T17:31:25.480 に答える