所以这是我的设置:
一个简单的NSWindow
,其中包含NSTextField
个用户条目加上' 接受 '输入NSButton
。
使用beginSheetModalForWindow:completionHandler:
我想在用户按下转义键时关闭工作表,但我得到的只是有趣的系统声音,告诉我它并不真正期待那时的转义键。
有几个类似的问题表明我们应该只检查响应者链中某处的cancelOperation
。事实是,当我在调试器中检查时,我的窗口控制器(对于工作表中的窗口/对话框)甚至不在响应链中。
对于以上述方式显示的工作表,响应者链仍然是关于我的文档窗口。怪异。
所以任何提示如何正确连接到cancelOperation
或Escape键都会非常感激!
答案 0 :(得分:3)
由于您的工作表可以取消,您应该添加一个“取消”按钮,以便用户明白这种可能性。如果你这样做,并将该取消按钮的键盘快捷键设置为IB中的转义键,那么它应该是Just Work。我认为重要的是按钮的名称实际上是“取消”,但是;我记得读过AppKit根据该按钮名称在幕后做了一些特殊的胶水魔术。
顺便说一句,看起来你的窗口控制器应该在响应者链中,假设它是以正确方式设置的实际NSWindowController
;请参阅Apple的文档here。不知道为什么调试器表明它不是,但它应该是,据我所知。如果确实不是,那可能表明您设置工作表的方式更加严重。不过,我不确定,因为我自己没有尝试过。