私の目的は、ユーザーがキーボードの「完了」ボタンをクリックした後に、テキストをUITextFieldに保存することです。私はextFieldShouldReturnまたはtextFieldDidEndEditingでこれを行うことができます:それは何か違いはありますか?またはより良いアプローチがありますか?UITextFieldテストを保存する最良の方法:textFieldShouldReturnまたはtextFieldDidEndEditing
ありがとうございます!
私の目的は、ユーザーがキーボードの「完了」ボタンをクリックした後に、テキストをUITextFieldに保存することです。私はextFieldShouldReturnまたはtextFieldDidEndEditingでこれを行うことができます:それは何か違いはありますか?またはより良いアプローチがありますか?UITextFieldテストを保存する最良の方法:textFieldShouldReturnまたはtextFieldDidEndEditing
ありがとうございます!
textFieldShouldReturnは、ユーザーがリターンキーを押した場合にのみ呼び出されます。ユーザーが別のフィールドを選択したり、別の画面にビューを切り替えるなどの理由で、キーボードが閉じられても、それはされませんが、textFieldDidEndEditingはなります。
最善のアプローチは、このように(キーボードを非表示)レスポンダを辞任するtextFieldShouldReturnを使用することです:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//hide the keyboard
[textField resignFirstResponder];
//return NO or YES, it doesn't matter
return YES;
}
キーボードを閉じると、textFieldDidEndEditingが呼び出されます。あなたは、テキストで何かをするtextFieldDidEndEditingを使用することができます。
- (BOOL)textFieldDidEndEditing:(UITextField *)textField
{
//do something with the text
}
しかし、あなたが実際にユーザが明示的に押したときにのみアクションを実行したい場合は「行く」または「送信」または「検索」(または何でも)あなたが代わりにtextFieldShouldReturn方法でそのハンドラを置く必要があり、キーボード上のボタンは、その後、次のように:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//hide the keyboard
[textField resignFirstResponder];
//submit my form
[self submitFormActionOrWhatever];
//return NO or YES, it doesn't matter
return YES;
}
これは私がtextFieldDidEndEditingまたはそこより良いアプローチを使用する必要があることを意味するのでしょうか? – user836026
更新された回答を参照してください。 –
ありがとうございます。たとえユーザーが「ホーム」ボタンを押したとしても、ユーザーが「完了」ボタンを押さなくてもテキストを保存したいと思います。私はあなたの答えから "textFieldShouldReturn"を使うべきだと理解しました。 – user836026