UITextField
shouldChangeCharactersInRange
delegate
method is not called when a word is selected from autocorrection bar with simplified Chinese keyboard. When I type 'ni hao', this delegate
method gets called for each character, but when I selected a word from autocorrect suggestion bar this delegate method is not called. This is only happening in iOS 7
with simplified chinese, it is working fine with japanese keyboard. I want to do my application specific action when selecting the word. Any help is much appreciated.
Asked
Active
Viewed 1,610 times
3
2 Answers
2
I meet the same issue today. I fixed it as below:
Don't use delegate, just use Notification:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextFieldTextDidChangeNotification object:nil];

AnkyHe
- 76
- 1
- 6
-
I tried this, but its not worked for me,What you implemented in textChanged event.? please tell me more about your implementation it will be helpful for me. – Sabareesh Jan 17 '14 at 11:22
0
I encountered this issue, too. Thanks to @AnkyHe 's solution. Here is my implemention.
In the ViewController which hold your UITextField:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textChanged:)
name:UITextFieldTextDidChangeNotification
object:nil];
}
- (void)textChanged:(NSNotification *)notif
{
UITextField *editingTextField = (UITextField *)notif.object;
NsLog(@"changed textL %@", editingTextField.text);
}

billbai
- 143
- 1
- 6
-
Make sure you call `removeObserver` in the `dealloc` method of the view controller. – rmaddy May 02 '16 at 22:56