如何在NSTextField中实时捕获用户输入?

时间:2013-10-15 14:45:40

标签: objective-c cocoa nstextfield

我可以在用户点击按钮时捕获字符串。 我也使用以下方法

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

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

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

以上方法似乎无法做到......

3 个答案:

答案 0 :(得分:2)

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

其中,NSTextDelegate协议声明了此委托方法:

  

textDidChange:

     

通知代理文本对象已更改其字符或格式属性。

     

- (void)textDidChange:(NSNotification *)aNotification

     

<强>讨论

     

aNotification的名称是NSTextDidChangeNotification。

这里记录了NSTextDidChangeNotification NSTextDidChangeNotification

答案 1 :(得分:1)

请使用文本字段发布的NSControlTextDidChangeNotificationcontrolTextDidChange:委托方法(来自NSControl)。当您收到回调时,您可以检查当前在该字段中的文本以决定该做什么。

答案 2 :(得分:0)

做同样事情的很多方法。此版本可让您轻松捕获感兴趣的特定按键。

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString{
     NSLog(@"last character entered: %@",replacementString);
}
例如,如果您正在寻找返回键,则可以实现:

if ([replacementString characterAtIndex:0] == NSNewlineCharacter)
    NSLog(@"return pressed");