这似乎非常基本但是这里.如果你是面向键盘的,你习惯于在OS X中一直使用Command-W关闭窗口.我想将这个功能添加到我在Interface Builder中为我的程序创建的对话框中.我可以看到如何添加一个等效于按钮动作的键盘但是如果我没有按钮怎么办?
我应该添加一个隐形按钮并将快捷方式放在那里吗?看起来很笨拙.当然有一些我可以覆盖的方法,但到目前为止我尝试过的方法都没有用.
按Command+时W,它与File -> Close
从菜单栏中选择的完全相同.什么Close
是向performClose:
第一响应者发送消息.反过来,它将检查接收器或接收者的委托是否实现windowShouldClose:
,并且如果窗口返回则窗口将关闭YES
(否则,它将调用该close
方法).
所以,这取决于你在这里得到的对话类型.如果它是非模态的(实际上,如果你可以在运行时访问菜单栏)并且是一个实例或子类NSWindow
,那么你需要做的就是覆盖windowShouldClose:
对话框委托中的方法(或者你的对话框类,如果你是子类的话)NSWindow
或什么)让它回来YES
.
但是,如果对话框是模式对话框(在对话框运行时无法访问菜单栏,切换窗口等),则不能这样做.你可以添加一个不可见的按钮,但是老实说,不应该通过点击来关闭模态对话框Command-W
,因为这肯定违反了一些Apple界面指南.(特别是因为正如Ande所说,Esc关闭/取消对话是标准做法.)