Ios 听UITextField setText

Ios 听UITextField setText,ios,objective-c,iphone,Ios,Objective C,Iphone,我有一个UITextField,它是从不同的模块更新的(我将我的UITextField传递给上面提到的模块来填充它)。我需要一种方法来确定UITextField的文本值在UITextField最初所在的模块中何时发生更改。UITextField委托方法或uicontrol事件将不起作用,因为文本是以编程方式填充的。我不太明白您所说的“不同模块”是什么意思,但您可以尝试订阅 另一种获得通知的方法是使用。不过,我不知道它是否适用于text属性。将以下内容放在某个位置,如-viewDidLoad: [

我有一个UITextField,它是从不同的模块更新的(我将我的UITextField传递给上面提到的模块来填充它)。我需要一种方法来确定UITextField的文本值在UITextField最初所在的模块中何时发生更改。UITextField委托方法或uicontrol事件将不起作用,因为文本是以编程方式填充的。

我不太明白您所说的“不同模块”是什么意思,但您可以尝试订阅


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

将以下内容放在某个位置,如-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: