9

有以下几点:

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

进而:

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

在 中有一个断点-handleTextChange:,但不会被解雇。textField 在 Interface Builder 中连接。


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

4

5 回答 5

7

所以我想通了。IOS6 SDK 中的变化是,如果您以编程方式更改文本字段的文本,它不会发送通知。我在所有这些视图上都有一个自定义键盘。当我点击一个键时,它会通过添加我输入的任何内容来更改文本字段的文本值。在 ios 5 中它会发送通知“textdidchange”,但在 ios6 中不会。

于 2012-10-10T19:24:42.187 回答
7

Irena是正确的,当以编程方式设置文本字段时,UITextFieldTextDidChangeNotification 不会触发。但是我想澄清一下,它与 iOS6 无关,它与 iOS 6 SDK 有关。如果您使用 iOS 5.1 SDK 进行编译,UITextFieldTextDidChangeNotification 通知将在文本字段发生更改时触发,无论是编程方式还是其他方式,即使在 iOS 6 设备上运行也是如此。

于 2013-01-14T20:20:32.257 回答
1

我的用例有点特殊,我正在创建 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声明之前调用。

于 2013-11-21T20:22:31.770 回答
0

在我的 ipad3 和 iOS6.0 通知 UITextFieldTextDidChangeNotification 上工作正常。放

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

在你看来DidLoad

于 2012-11-16T10:20:15.583 回答
0

作为 Apple 修复此问题之前的临时解决方法,您可以使用以下代码示例:

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

该代码将继续触发该事件。

这也有效:

[((UITextField*)view) sendActionsForControlEvents:UIControlEventEditingChanged];
于 2013-04-06T01:27:33.637 回答