textDidChange vs controlTextDidChange

时间:2012-09-01 13:01:49

标签: objective-c

有人可以解释一下为什么textDidChange没有处理我的委托但是controlTextDidChange在NSTextField中工作。

 - (void)controlTextDidChange:(NSNotification *)aNotification{
    NSBeep();
}

 - (void)textDidChange:(NSNotification *)aNotification{
    NSBeep();
}

2 个答案:

答案 0 :(得分:5)

controlTextDidChange:NSTextField上定义的正确委托方法(继承自NSControl)。

textDidChange:是一种方法,在NSTextField上调用时,使其行为就像文本更改一样(包括调用上述方法)。它不是您实施的委托方法。

这与Apple有点不一致,因为UISearchBarDelegate上有textDidChange:委托方法。

答案 1 :(得分:0)

textDidChange:Informs the delegate that the text object has changed its characters or formatting attributes.

我猜这意味着它的字体(文本属性)会发生变化,而不是输入的文字。