2

我有一个包含几个 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;
}

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

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

其中 display 是 NSTextField 出口的名称。

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

4

0 回答 0