对于某些共鸣,有时我在状态栏菜单中使用的NSTextField并不总是允许我输入文本。我点击它,没有任何事情发生,就像它被禁用。重新启动程序后,它再次工作。我没有对它做任何事情,它只是在界面构建器中创建的。
答案 0 :(得分:0)
那是因为没有NSWindow包含NSTextField。当窗口到达主窗口时,NSWindow设置第一个响应者。 NSStatusBar是全球性的。它从来没有集中过,所以你的文本字段只会在一开始就集中注意力。
我不确定是否有办法以一种很好的方式解决这个问题。您可以尝试手动设置第一个响应者。您还可以添加global event monitor
示例:
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent* incoming) {
[textfield setStringValue:[incoming characters]];
}];
注意:这是解决此问题的一种非常糟糕的方法。如果可能的话,我首先尝试手动将NSTextField设置为第一响应者。