5

クリアボタンが押された後にUITextField呼び出しが行われるが、プロパティにはまだ古いデータがあることに気付いた人はいますか?textFieldDidEndEditingtext

ここで提供できるコードサンプルがわかりません。それが重要な場合は、ストーリーボードを使用しています。

今のところ、メイン フォームの [送信] ボタンにあるすべての編集コントロールからデータを取得する必要があります。textFieldDidEndEditingしかし、理想的には、ハンドラーでデータを収集したいと思います。

より良い回避策はありますか?

私はiOS 6を使用しています。

更新:基本的に、フォームにあるものは次のとおりです

  • UITextFieldUiButtonフォーム上にあります。
  • resignFirstResponderのハンドラーを呼び出すことにより、キーボードが消えましたUITapGestureRecognizer

問題を再現する手順:

  • 編集コントロールをクリックします。テキストを入力します。
  • テキスト コントロールの外側をタップします。
  • textFieldDidEndEditingと呼ばれます。プロパティ.textに入力した値があります。すべて良い。
  • エディット コントロールをもう一度クリックします。
  • クリアボタンをクリックします。
  • textFieldDidEndEditing再び呼び出されます。しかし、.text削除したばかりのプロパティにはまだ値があります。
  • UITextField 内でカーソルが点滅しているのを確認したら、フォームのボタンをタップします。
  • キーボードがtextFieldDidEndEditing呼び出されませんでした。

明日、サンプルプロジェクトをGitHubにアップロードします。

4

3 に答える 3

2

最初のチェックUITextFieldDelegateが割り当てられているかどうか、次に

デリゲートを実装し、textFieldShouldClearここにコードを記述して、textField をクリアします

これを行うには、clearButtonModeプロパティを設定する必要があります。

yourTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
yourTextField.delegate = self;

textFieldShouldClear次に、デリゲートを実装します

.h ファイル

@interface myViewController: UIViewController <UITextFieldDelegate>{
}

.m ファイル

-(BOOL)textFieldShouldClear:(UITextField *)textField

    yourTextFeild.text = @"";
    return YES;
}
于 2013-09-06T07:06:58.880 に答える
-1

ここで試してください:

-(BOOL) textFieldShouldReturn:(UITextField*) textField
于 2013-09-06T07:06:33.260 に答える