2014-04-13 35 views
1

我有一个NSTextField来获取路径。用户可以输入路径或在文本字段中拖动文件夹。 (我分类NSTextField启用拖放)。 每次编辑文本时,我都想做点事情。我试图链接在IB一个动作,我从NSTextFieldDelegate以编程方式编辑时的通知NSTextField

-(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

我发现了一个解决办法在我的NSTextField setstringvalue的子类发送通知:使用方法: - 的addObserver:选择:名称:对象: - postNotificationName:对象: – impact27

回答

0

来自NSNotification的对象不得为nil。改为引用您的文本字段。

[NSNotification notificationWithName:NSControlTextDidChangeNotification object:self];