我将NSTextField子类化并将 textDidChange:覆盖为:
- (void)textDidChange:(NSNotification *)notification
{
// ... My own operation
}
但是当我将输入文本框拖到我的.xib
文件中并控制拖动另一个类来分配委托时,我发现委托人的 controlTextDidChange:
方法从未被调用过。< / p>
现在尝试解决这个问题,我尝试了两种方法:
予。致电super
:
- (void)textDidChange:(NSNotification *)notification
{
// ... My own operation
[super textDidChange:notification];
}
但是我在运行时遇到错误:尝试从对象插入nil对象[0]
II。调用delegate
的方法
- (void)textDidChange:(NSNotification *)notification
{
// ... My own operation
if ([self.delegate responseToSelector:@selector(controlTextDidChange:)])
{
[self.delegate ...]; // <--- Opps, something not happerned here.
}
}
什么没有被逮捕?我希望自动完成功能应在controlTextDidChange:
位置显示...
方法。但事实并非如此。我直接输入了方法,编译失败,因为找不到方法。
我应该如何让我的子类正常调用委托?我该如何正确覆盖textDidChange:
方法?
Vytautas的进一步问题:
NSTextField
。我在controlTextDidChange:方法中设置了一个断点。正如它所说,我应该知道。textDidChange:
方法中打印委托对象,确保委托设置正确。controlTextDidBeginEditing:
。但controlTextDidChange:
未调用NSTextField
类中的覆盖文件注释掉,然后调用了controlTextDidChange:
。textDidChange:
权利。但我不知道如何解决它。controlTextDidChange:
方法。关于自动完成,以下是它的显示方式:
http://i44.tinypic.com/11rxh5f.jpg
没有- controlTextDidChange:
方法。
Vytautas的第二次回复:
我尝试调用'[self controlTextDidChange]'但它不起作用,并且发生了错误(如下所示): http://oi41.tinypic.com/9i9pmx.jpg
答案 0 :(得分:1)
我可以说肯定会调用 - controlTextDidChange:
。
你的* .xib绑定可能有问题。
也可以在* .xib中使用NSTextView,而不是NSTextField。
在这种情况下,肯定不会调用 - controlTextDidChange:
。
如果是这种情况,那么您应该查看NSTextView
,NSTextViewDelegate
和NSTextDelegate
。 NSTextView委托为此 - textDidChange: