2015-09-25 23 views
4

所以这是我的设置:无视片用单个文本字段的快捷键

一个不重要NSWindow与单个NSTextField用户进入加一个“接受”型NSButton

显示窗口在我的文档窗口,利用片beginSheetModalForWindow:completionHandler:

我想,当用户按下Esc键来关闭表,但我得到的是有趣的系统声音告诉我,这不真的期待在这一点上逃脱的关键。

有几个类似的问题提示我们应该检查cancelOperation响应链中的某个地方。事情是,当我在调试器中检查它时,我的窗口控制器(用于表单中的窗口/对话框)甚至不在响应器链中。

对于以上述方式显示的表单,响应者链仍然是关于我的文档窗口。奇怪的。

因此,任何提示如何正确连接到cancelOperation或退出键将非常感激!

+0

您是否在调试器中尝试并查看cancelOperation:或甚至keyDown:方法是否在您的NSResponder子类(例如您的视图控制器/窗口控制器)中命中? – cacau

回答

3

由于您的工作表可以被取消,所以您可能需要在其上添加一个取消按钮,以便使用户清楚这一可能性。如果你这样做,并将该取消按钮的键盘快捷键设置为IB中的退出键,那么它应该只是工作。不过,我认为按钮的名称实际上是“取消”是很重要的;我记得读到AppKit基于该按钮名称在幕后做了一些特殊的胶水魔术。

顺便说一句,你的窗口控制器似乎应该在响应者链中,假设它是以正确的方式设置的实际NSWindowController;请参阅Apple的文档here。不知道为什么调试器表明它不是,但应该是,据我所知。如果确实不是这样,那可能表明您设置表单的方式更加错误。但我不确定,因为我自己没有尝试过。

+0

我想这个问题不是关于如何挂钩取消按钮,但如何处理这个设置中的一般逃生键 – ATV

+0

我的观点是,我相信,AppKit具有特殊处理代码,用于换单内部的转义键,以及使用“取消”按钮 - 除了在面板事实上可取消的情况下进行良好的用户界面设计外 - 还可免费获得该特殊处理代码的好处。与现在一起游泳,而不是反对它。 – bhaller

+0

@SteveM,在我看来,我已经回答了你的问题。如果是这样,请接受答案。如果没有,请澄清为什么不。 – bhaller