セルのコンテンツ ビューに 3 つの UITextFields が追加されたテーブルがあります (セクションごとに 1 行)。特定のフィールドをスクロールしてキーボードの上に表示できるように、挿入する 4 番目のセクションがあります。
私が抱えている問題 (iPad のみ) は、テキスト フィールドの 1 つに firstResponder がある場合、ユーザーが別のフィールドをタップしてもそれが放棄されないことです。iPad のレスポンダー チェーンに違いはありますか? ビュー コントローラ UITextFieldDelegate の次のコードでは、別のフィールドに触れたときに textFieldShouldEndEditing が呼び出されません。完了ボタンを押すと、期待どおりに機能します (別のフィールドがタッチされていない限り)。
以下のコードに何か問題がありますか?
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
if (!_editing++) {
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:4] withRowAnimation:UITableViewRowAnimationNone];
}
// scroll to section number in the text fields tag
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:textField.tag] atScrollPosition:UITableViewScrollPositionTop animated:YES];
return YES;
}
- (void) textFieldDidBeginEditing:(UITextField *)textField {
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:textField action:@selector(resignFirstResponder)] autorelease];
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
if (_editing-- == 1) {
//
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:4] withRowAnimation:UITableViewRowAnimationNone];
}
self.navigationItem.rightBarButtonItem = nil;
// do something with the text here...
return YES;
}