I Methode init habe, wo ich meinen Beobachter bin EinstellungUITextFieldTextDidChangeNotification wird zweimal aufgerufen, wenn die chinesischen Schriftzeichen autocorrecting
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textChanged:)
name:UITextFieldTextDidChangeNotification
object:textField];
Also, wenn Benutzer chinesische Schriftzeichen aus autocorrect betreten nennt es unten Methode zweimal, aber wenn ich eingeben Englisch Brief Tastatur nannte es diese Methode nur einmal,
- (void)textChanged:(NSNotification *)notification
{
}
Eine Idee, wie kann ich das vermeiden?
Hallo Ich habe einige Backtrace für autocorrect chinesisches Schriftzeichen & Englisch Charakter, sie haben unterschiedliche Verfahren.
Backtrace für autocorrect chinesisches Schriftzeichen
1 eingeben
frame #6: 0x0000000102dfb109 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 66
frame #7: 0x0000000104585ab8 UIKit`-[UITextField fieldEditorDidChange:] + 257
frame #8: 0x0000000104590cb7 UIKit`-[UITextInputController _sendDelegateChangeNotificationsForText:selection:] + 138
frame #9: 0x0000000104598751 UIKit`-[UITextInputController setMarkedText:selectedRange:] + 744
frame #10: 0x0000000103d1e200 UIKit`-[UIFieldEditor setMarkedText:selectedRange:] + 38
frame #11: 0x00000001045896bb UIKit`-[UITextField setMarkedText:selectedRange:] + 90
frame #12: 0x0000000104144c4a UIKit`-[UIResponder(UITextInput_Internal) _setMarkedText:selectedRange:] + 91
frame #13: 0x0000000103e432f8 UIKit`-[UIKeyboardImpl unmarkText:] + 167
frame #14: 0x0000000103e45df6 UIKit`__59-[UIKeyboardImpl handleAcceptedCandidate:executionContext:]_block_invoke_2 + 39
frame #6: 0x0000000102dfb109 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 66
frame #7: 0x0000000104585ab8 UIKit`-[UITextField fieldEditorDidChange:] + 257
frame #8: 0x0000000104590cb7 UIKit`-[UITextInputController _sendDelegateChangeNotificationsForText:selection:] + 138
frame #9: 0x000000010458970e UIKit`-[UITextField unmarkText] + 48
frame #10: 0x0000000104144d8a UIKit`-[UIResponder(UITextInput_Internal) _unmarkText] + 61
frame #11: 0x0000000103e43203 UIKit`-[UIKeyboardImpl unmarkText] + 43
frame #12: 0x0000000103e43305 UIKit`-[UIKeyboardImpl unmarkText:] + 180
frame #13: 0x0000000103e45df6 UIKit`__59-[UIKeyboardImpl handleAcceptedCandidate:executionContext:]_block_invoke_2 + 39
Backtrace für autocorrect Englisch Charakter
frame #6: 0x0000000102dfb109 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 66
frame #7: 0x0000000104585ab8 UIKit`-[UITextField fieldEditorDidChange:] + 257
frame #8: 0x0000000104590cb7 UIKit`-[UITextInputController _sendDelegateChangeNotificationsForText:selection:] + 138
frame #9: 0x0000000104593281 UIKit`-[UITextInputController _insertText:fromKeyboard:] + 893
frame #10: 0x0000000104593bcd UIKit`-[UITextInputController insertText:] + 365
frame #11: 0x0000000103d1d728 UIKit`-[UIFieldEditor insertFilteredText:] + 800
frame #12: 0x000000010458a7d7 UIKit`-[UITextField insertFilteredText:] + 103
frame #13: 0x0000000103e48a83 UIKit`-[UIKeyboardImpl insertText:] + 125
frame #14: 0x0000000103e45278 UIKit`-[UIKeyboardImpl performKeyboardOutput:] + 496
frame #15: 0x0000000103e44e65 UIKit`__55-[UIKeyboardImpl handleKeyboardInput:executionContext:]_block_invoke_2 + 164
Wo fügen Sie Beobachter in View-Controller hinzu? Ich meine, in welcher Methode? – developer
Wenn es zweimal aufgerufen wird, sehen Sie sich den Textwert des Textfelds an. Ist der Wert zwischen den beiden Anrufen unterschiedlich? – rmaddy
@developer Ich habe es in Init-Methode aufgerufen. –