NSButton的键绑定问题

时间:2012-10-28 06:52:27

标签: cocoa nstextfield nsbutton

我有一个包含多个NSButton对象的布局,以及一个只能选择文本的NSTextField。其他NSButton对象具有关联的键绑定,这在我在文本字段中选择一些文本之前一直很有效。从那里开始,布局中其他按钮的键绑定不再起作用。

我已经研究了不同的解决方案,比如尝试设置SetSelectable:NO和YES,但看起来文本字段保持其焦点并接收所有击键,即使它不可编辑。

我希望文本字段中的文本是可选的,但是如果单击其中一个按钮,则文本字段应该停止接收键事件。

有什么想法吗?


我找到了解决方案。

在Macrumors: http://forums.macrumors.com/showthread.php?t=852807

我找到了一个方法,用于检查文本字段是否具有焦点:

- (BOOL)isTextFieldInFocus:(NSTextField *)textField {
BOOL inFocus = NO;

inFocus = ([[[textField window] firstResponder] isKindOfClass:[NSTextView class]]
           && [[textField window] fieldEditor:NO forObject:nil]!=nil
           && [textField isEqualTo:(id)[(NSTextView *)[[textField window] firstResponder]delegate]]);

return inFocus;
}

然后在所有NSButton上执行的Update方法中,我写道:

if ([self isTextFieldInFocus:display]) {
    [display setHidden:YES];
    [display setHidden:NO];
}

其中display是NSTextField出口的名称。

现在,当我选择一些文本,然后按下其中一个按钮时,NSButtons上的键绑定就会恢复正常工作。这允许用户选择和复制文本,但是他必须按一个按钮来输入击键,我认为这是可以的。

0 个答案:

没有答案