即使我更改了文本字段中的文本,也没有调用此UITextField委托方法。 当键盘语言设置为日语/中文输入并且我从建议的单词列表中选择单词时,会发生这种情况。
- (BOOL) textField : (UITextField *) textField shouldChangeCharactersInRange : (NSRange) range replacementString : (NSString *) string
我不确定这是否是iOS中的错误。
有人遇到同样的问题吗?
答案 0 :(得分:1)
我认为这是iOS 4.x中的一个错误,似乎已在iOS 5测试版中得到修复。
由于关于iOS 5的NDA,我无法详细说明。希望这有帮助。
答案 1 :(得分:0)
它可能不是iOS 4.x中的错误。即使在iOS 9.x中,这种情况仍然存在 对于日语/中文或任何其他可以从键盘上方建议的单词列表中选择单词的语言,此委托方法
- (BOOL) textField : (UITextField *) textField shouldChangeCharactersInRange : (NSRange) range replacementString : (NSString *) string
不会被调用.UITextfield的文本直接附加在选择的单词上。
解决方法是使用UITextFieldTextDidChangeNotification
:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(checkForTextfield:)
name:UITextFieldTextDidChangeNotification
object:nil];
受影响的文本字段存储在通知的object参数中。未使用userInfo字典。
- (void)checkForTextfield:(NSNotification *)noti{
UITextField* textField = noti.object;
//do whatever you want with the UITextfield
}
当dealloc:
时,不要忘记从NSNotificationCenter
中删除self
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}