3

textFieldInput という名前の UITextField といくつかのボタンがあります。誰かがtexFieldをタップしてもキーボードが表示されないように、どういうわけか入力ビューを無効にします。プログラムでボタンが押されたときにテキストを追加しています。そして、私はこの変化を捉えたいと思っています。textField のテキストが変化するタイミングで関数を呼び出したい。どうやってやるの?

次の機能を追加してみました

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementStr {
// some my code
return YES;
}

しかし、これはうまくいきません。これは、textField をタップしたときにのみ呼び出されます。

また、viewDidLoad関数に以下を追加してみました

[textFieldInput addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

これも機能しません。

これどうやってするの?

ありがとう。

4

2 に答える 2

7

登録通知。

 [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(textChanged:)
                                              name:UITextFieldTextDidChangeNotification
                                            object:YOUR_TEXT_FIELD];
于 2012-07-25T05:07:41.487 に答える
1
shouldChangeCharactersInRange:

これは、このメソッドを実装するコントローラーでデリゲートを設定した場合にのみ機能します。もう1つの方法は次のとおりです。

これらの行を追加viewDidLod

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

    [nc addObserver:self
           selector:@selector (handle_TextFieldTextChanged:)
               UITextFieldTextDidChangeNotification
             object: textFieldInput];

実装するhandle_TextFieldTextChanged:

- (void) handle_TextFieldTextChanged:(id)notification {

    // write your logic here.
}
于 2012-07-25T05:10:40.613 に答える