我有一个NSTextField来获取路径。用户可以在文本字段中键入路径或拖动文件夹。 (我将NSTextField子类化为启用拖放功能)。 我想在每次编辑文本时做一些事情。我试图在IB中链接一个动作,我从NSTextFieldDelegate
实现了委托方法-(void)controlTextDidChange:(NSNotification *)obj
但是我只在用户更改文本时收到通知,而不是以编程方式更改时收到通知。
最后,我尝试重新定义setStringValue
-(void)setStringValue:(NSString *)aString{
[self textDidChange:[NSNotification notificationWithName:NSControlTextDidChangeNotification object:nil]];
[super setStringValue:aString];
}
但是我收到了错误
Ignoring exception raised in void run_cocoa_block(void *): *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
我想这是因为我应该把东西放在对象中:但我不知道是什么
答案 0 :(得分:0)
来自NSNotification
的对象不得为nil
。改为引用文本字段。
[NSNotification notificationWithName:NSControlTextDidChangeNotification object:self];