【问题标题】:Document sheet not responding to keyboard events文档表不响应键盘事件
【发布时间】:2011-08-19 14:00:31
【问题描述】:

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

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

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

面板从主窗口的标题栏中正确显示。我可以用鼠标操作面板上的弹出控件,但我不能编辑文本字段,也不能在字段之间切换。其他一切正常。有什么想法吗?

【问题讨论】:

  • 在这方面仍然没有成功。添加评论希望夜间人群看到它。谢谢。
  • 您是否覆盖了与响应者有关的任何内容?
  • 不,我想不到。但是我已经对 xib 文件设置做了很多调整,我想知道我是否在那里搞砸了。
  • 可能。尝试取消选中 拒绝第一响应者

标签: objective-c cocoa nswindow nsapplication


【解决方案1】:

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

@spudwaffle - 所有对象都没有拒绝第一响应者检查。

【讨论】:

  • 我理解这意味着工作表窗口(不是父窗口)的样式掩码必须包含 NSTitledWindowMask,或者选中 IB 框“标题栏”。此外,我在使用新的 (10.9) NSWindow sheet API 的非文档应用程序中看到了这个问题。
  • 没错,保罗。您用作工作表的面板,而不是父面板。
  • 请把这个答案复制到某处!
  • @MarekH 除了这里?为什么?
  • @Tommy:你会很高兴知道,在 2021 年这个令人惊叹的未来,这仍然是 macOS 11.1 Big Sur 中的一个问题! (别担心接下来的几年,你不会相信 2020 年和 2021 年会有多美好的事情发生。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
相关资源
最近更新 更多