私はまったく同じ問題を抱えていました、そしてこれは私がたどり着いた解決策です。
textFieldのキーボードが辞任されたときに処理するための別のメソッドを設定し、そこにself.view.centerの再配置を配置します。このようにして、textFieldDidEndEditingメソッドを確実に分離できます。
これは私が自分自身を適切に説明しなかった場合の例です。ユーザーがtextFieldをタップすると、ナビゲーションバーにDONEボタンが配置されます(数字キーパッドであるため)。ただし、このメソッドは通常のキーボードのDONEボタンにリンクできます。
- (void)textFieldDidBeginEditing:(UITextField *)textField {
UIBarButtonItem *hideKeyboardButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignResponder:)];
[self.navigationItem setRightBarButtonItem:hideKeyboardButton animated:YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
//Nothing needs to go here anymore
}
- (void)resignResponder:(id)sender {
[textField resignFirstResponder];
//Use core animation instead of the simple action below in order to reduce 'snapback'
self.view.center = CGRectMake(0, 0, 320, 480);
}