2011-10-29 6 views
1

を削除し、デリゲートメソッドtextField:shouldChangeCharactersInRange:replacementString:が呼び出されます。UITextFieldDelegateとフルラインが

私はテキストフィールドに文字のフルラインを入力し、[Delete]キーを押したままにすると、しかし、最初のiOSのは、それが削除され、各文字のためのデリゲートを呼び出します。しかし、(途中で)途中で残っているものはすべて削除されます。奇妙なことは、このときにtextField:shouldChangeCharactersInRange:replacementString:が呼び出されないということです。どちらもtextFieldShouldClear:です。

どのように私は、このイベントを検出することができますか?テキストフィールドが空のときにUIを更新したい私がこの方法で空にすると、コードが検出されません。

答えて

0

あなたのテキストフィールドにUITextFieldDidChangeNotificationを観察するためにオブジェクトを登録することができます。例えば

:その後、

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:self.textField];  
} 

- (void)textFieldDidChange:(NSNotification *)notification 
{ 
    UITextField *aTextField = [notification object]; 
    if ([aTextField.text length] == 0) { 
     aTextField.backgroundColor = [UIColor redColor]; 
    } 
} 

あなたは

aTextField.backgroundColor = [UIColor redColor]; 

にブレークポイントを設定した場合、最後の削除はそのセットを発生する前に、あなたはそれが適切と呼ばれていることがわかりますテキストフィールドのtextプロパティをnilに設定します。

あなたは、単にあなたの財産のself.textFieldにアクセスすることができますが、私は、オブジェクトに通知リファレンスにアクセスする方法を実証しています。セレクター:名前:オブジェクト:あなたが最後のパラメータ(-addObserver内のオブジェクトを:)アウトままにした場合には、そのオブジェクトのインスタンス内のすべてのテキストフィールドのための通知を呼び出します。

関連する問題