文档表没有响应键盘事件

Fly*_*ver 14 cocoa objective-c nswindow nsapplication

我认为这是第一个响应问题,但我不确定.我正在为表视图中的数据实现编辑窗口.在概念上与用于编辑Mail.app中的过滤规则的UI非常相似.

我有一个编辑窗口,我附加到我的主窗口:

[NSApp beginSheet: criteriaEditPanel 
   modalForWindow: [self window] 
    modalDelegate: self 
   didEndSelector: @selector(criteriaEditDidEnd:returnCode:contextInfo:) 
      contextInfo: (void *)[criteriaList objectAtIndex: index]];
Run Code Online (Sandbox Code Playgroud)

面板从主窗口的标题栏中正确显示.我可以使用鼠标操作面板上的弹出控件,但我无法编辑文本字段,我无法在字段之间切换.其他一切都很好.有任何想法吗?

Fly*_*ver 32

解决了.信不信由你,你必须为面板启用标题栏,即使它在显示为工作表时永远不可见.在IB中启用它时,键盘输入开始工作.

@spudwaffle - 没有任何对象检查过拒绝第一响应者.

  • 我理解这意味着工作表窗口的样式掩码(不是父窗口)必须包含NSTitledWindowMask,或者检查IB框"标题栏".此外,我在一个非文档应用程序中使用新的(10.9)NSWindow工作表API看到了这个问题. (2认同)
  • @Tommy:您会很高兴知道,在 2021 年这个令人惊叹的未来,这仍然是 macOS 11.1 Big Sur 中的一个问题!(不要担心接下来的几年,你不会相信 2020 年和 2021 年会有多么美好的事情发生。) (2认同)