听UITextField setText

时间:2014-08-15 13:01:43

标签: ios objective-c iphone

我有一个UITextField,它是从另一个模块更新的(我将我的UITextField传递给上面提到的模块来填充它)。我需要一种方法来识别UITextField的文本值何时在UITextField最初所在的模块内被更改。 UITextField Delegate方法或UIControlEvents将无法正常工作,因为文本是以编程方式填充的。

2 个答案:

答案 0 :(得分:1)

我不太明白你所说的"不同的模块",但你可以尝试订阅UITextFieldTextDidChangeNotification

获得通知的另一种方法是使用Key-Value Observing。但是,我不知道它是否适用于text属性。

答案 1 :(得分:1)

将以下内容放在某处,例如-viewDidLoad:

[textField addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil];

然后添加-observeValueForKeyPath,如:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if (object == textField)
    {
        // Do whatever with your text field here
    }
}

只有在以编程方式设置文本时才会调用此方法,而不是在用户键入字段时调用。

或者只是UITextField的子类并传入您的子类。您可以根据需要覆盖setText: