1

背景: TableDataSourceから入力されたカスタムUITextFieldsを持つ3つの行を持つUITableViewがあります。これらのテキストフィールドのデフォルトテキストもデータソースから入力されます(データベースフィールドのデフォルト値)。

ユーザーが特定のUITextFieldを選択/クリックすると、UITextFieldを自動的にクリアできます。

問題: ユーザーが特定のUITextFieldを選択した後、テキストを編集せずに別のUITextFieldに移動した場合、元のデフォルトのテキストを再表示したいと思います。デリゲートの「didEndEditing」メソッドでUITextFieldをnilに設定しようとしましたが、機能しませんでした。

誰かがこれを達成する方法を知っているかどうかアドバイスできますか?

4

2 に答える 2

2

placeholderのプロパティを使用して簡単に行うことができますUITextFieldが、テキストは少しぼやけて表示されます。前の値を表示する場合は、次の解決策を使用できます。

textFieldDidEndEditingデリゲートメソッドを使用してそれを行うことができます。

 - (void)textFieldDidEndEditing:(UITextField *)textField
{
   if(textField.text.lenght == 0)
   {
      textField.text = yourPreviousText;
   }
}

そしてでtextFieldShouldBeginEditing

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
   yourPreviousText = textField.text;
}

yourPreviousTextはNSString、クラススコープで宣言されたオブジェクトです。

于 2013-01-02T05:10:27.650 に答える
0

解決策:UITextfield.textプロパティを使用してプレースホルダーテキストを設定していました。むしろ、UITextField.placeholderプロパティを使用する必要があります。このプロパティを設定すると、ユーザーが実行した編集に基づいて、プレースホルダーテキストが自動的に非表示および再表示されます。ユーザーが何を入力したか、何を入力していないかを把握しようとするという点で、多くの作業を取り去ります。

于 2013-01-02T05:08:10.937 に答える