2016-03-26 5 views
0

Ich möchte benutzerdefinierte UITextFiled Eingabeansicht, bei benutzerdefinierten Ansicht hören TextField Wert ändern.Bei Verwendung von UITextField kann die Settext-Methode UITextFieldTextDidChangeNotification nicht empfangen

wenn ich self.textField.text = @"demo";

UITextFieldTextDidChangeNotification nicht genannt wurde, aber UITextFieldTextDidBeginEditingNotification genannt wurde,

Wie kann ich UITextFieldTextDidChangeNotification bekommen?

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextFieldTextDidChangeNotification object:nil]; 

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textBeginEdit:) name:UITextFieldTextDidBeginEditingNotification object:nil]; 
+1

Benachrichtigungen werden nicht gesendet, wenn das Textfeld aktualisiert wird via Kabeljau e. Das ist Absicht. – rmaddy

+0

@lintao wenn Sie self.textField.text = @ "demo" einstellen; im Code heißt das, wenn das passiert. Dann rufen Sie einfach textChanged: Funktion direkt dort. Warum ist eine Benachrichtigung erforderlich? –

+0

@ aman.sood Ich möchte nicht UITextField Verweis in der benutzerdefinierten Ansicht haben, das ist mein Code https://github.com/NSObjects/OMGEmojiKeyboard, ich hoffe UITextField Wert ändern Steuerelement senden Schaltfläche deaktivieren oder Enabel – Neal

Antwort

0

Weisen Sie Ihren ViewController als UITextField-Delegat zu. Stellen Sie sicher, dass Ihr Controller dem UITextFieldDelegate-Protokoll entspricht, und implementieren Sie dann diese Delegate-Methoden in Ihrem Controller.

@interface YourViewController()<UITextFieldDelegate> 
@end 

-(void)viewDidLoad 
{ 
    [super viewDidLoad] 
     self.textField.delegate = self; 
} 

// implementieren diese Methoden

  • textFieldShouldBeginEditing:
  • textFieldDidBeginEditing:
  • textFieldShouldEndEditing:
  • textFieldDidEndEditing:
+0

Das hat nichts mit der Frage zu tun. – rmaddy

+0

Ich schlage eine Alternative vor – habs93

+0

Es ist keine Alternative. Sie haben die Frage falsch verstanden. – rmaddy