UITextFieldTextDidChangeNotification不会被调用于iOS6的ipa

2019-08-01 04:57发布

有以下几点:

// watch the fields
[[NSNotificationCenter defaultCenter]  addObserver:self
                                          selector:@selector(handleTextChange:)
                                              name:UITextFieldTextDidChangeNotification
                                            object:textField1];

然后:

-(void) handleTextChange:(NSNotification *)notification {
  ...
}

在断点-handleTextChange:但不被解雇。 文本框被连接在界面生成器。


适用于iOS6的iPhone / iPad的模拟器,在iOS5.1的iPad2,但不能在iOS6的iPad3的。

Answer 1:

IRENA是正确的,当文本字段设置编程UITextFieldTextDidChangeNotification不火。 不过,我只是想澄清,它无关,与iOS6的,它与iOS 6的SDK做。 如果你跟iOS 5.1 SDK编译,每当文本字段被改变,编程或以其他方式,即使在iOS 6设备上运行UITextFieldTextDidChangeNotification通知将闪光。



Answer 2:

所以我想通了。 什么在iOS6的SDK改变的是,如果你改变文本框的文本编程方式,它不发送通知。 我对所有的这些观点的自定义键盘。 当我上的按键敲击,它改变了通过添加文本字段文本值不管我在打字。在iOS 5中它会发送通知“textdidchange”,但不是在iOS6的。



Answer 3:

我的使用情况有点特殊,我创建HH:MM:SS时间的UITextField与字符从后面进入,因此俘获字符- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string ,然后再返回return (NO); 禁止的UITextField ...预iOS6的的自动更新,它叫通知,-iOS6的帖子,我只是要求[[NSNotificationCenter defaultCenter] postNotificationName:UITextFieldTextDidChangeNotification object:self.textField]; 之前的return声明。



Answer 4:

在我的iPad3和iOS6.0通知UITextFieldTextDidChangeNotification做工精细。 放

[[NSNotificationCenter defaultCenter]  addObserver:self
                                      selector:@selector(handleTextChange:)
                                          name:UITextFieldTextDidChangeNotification
                                        object:textField1];

在您的viewDidLoad



Answer 5:

作为临时解决办法,直到苹果修复了这个,你可以使用下面的代码示例:

//view is a UITextField
NSString *temp = ((UITextField*)view).text;
((UITextField*)view).text = @"";
[((UITextField*)view) insertText:[NSString stringWithFormat:@"%@%@", @"-", temp]];

该代码将继续触发事件。

这工作太:

[((UITextField*)view) sendActionsForControlEvents:UIControlEventEditingChanged];


文章来源: UITextFieldTextDidChangeNotification doesn't get called on ios6 ipad3