2013-10-15 159 views
1

当用户点击按钮时,我可以捕获字符串。 我也使用下面的方法如何在NSTextField中实时捕获用户输入?

- (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor 

其中NSControlTextEditingDelegate协议中声明。 当用户开始编辑时,该按钮将可用。

我的问题是: 如何使用户删除所有文本时禁用按钮(使textField为空而无需点击按钮)?

上述方法似乎不能这样做......这是由文本字段发布

+0

可能重复http://stackoverflow.com/问题/ 11487443/text-change-notification-for-nstextfield) –

回答

1

查看使用NSControlTextDidChangeNotificationcontrolTextDidChange:委托方法(从NSControl)。当您收到回叫时,您可以检查当前字段中的文本以决定要执行的操作。

+0

嗨Wain,它像你说的那样工作。 – Strong

2

如果您的NSTextNSTextView,您也可以使用NSTextDelegate ProtocolNSTextViewDelegate Protocol

除其他外,NSTextDelegate协议声明此委托方法:

textDidChange:

通知该文本对象已经改变了文字或格式属性的委托。

- (void)textDidChange:(NSNotification *)aNotification

讨论

aNotification的名称是NSTextDidChangeNotification。

NSTextDidChangeNotification记录在这里NSTextDidChangeNotification

+0

它的工作。谢谢! – Strong

0

很多方法可以做到同样的事情。这个版本可以让你轻松捕捉特定的关键击键。

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString{ 
    NSLog(@"last character entered: %@",replacementString); 
} 

举例来说,如果你正为返回键,你可能会再执行:

if ([replacementString characterAtIndex:0] == NSNewlineCharacter) 
    NSLog(@"return pressed"); 
的[为文本的NSTextField变更通知(
相关问题