如何制作键盘快捷键来关闭Xcode / Interface Builder对话框?
这似乎非常基本,但是这里。 如果你是面向键盘的,你会习惯于使用Command-W在OS X中一直关闭窗口。我想将这个功能添加到我在Interface Builder中为我的程序创建的对话框中。 我可以看到如何添加一个等效于按钮操作的键盘,但是如果我没有按钮,该怎么办?
我应该添加一个不可见的按钮并在其上放置快捷方式吗? 看起来笨重。 当然,只有一些方法可以覆盖,但我迄今尝试过的方法并不奏效。
当你按下Command + W时,它与从菜单栏中选择File -> Close
完全相同。 Close
所做的是发送一个performClose:
消息给第一个响应者。 windowShouldClose:
,它将检查接收者或接收者的委托是否实现了windowShouldClose:
如果窗口返回YES
(否则它将调用close
方法),窗口将关闭。
所以真的,这取决于你在这里得到什么类型的对话。 如果它是非模态的(本质上,如果你可以在运行时访问菜单栏)并且是NSWindow
一个实例或子类,那么你所需要做的就是覆盖对话框委托中的windowShouldClose:
方法(或者你的对话框类,如果你分类NSWindow
或什么),并使其返回YES
。
但是 ,如果对话框是模态对话框(在对话框运行期间无法访问菜单栏,切换窗口等),则无法这样做。 你可以添加一个不可见的按钮,但是诚实地说,不应该通过点击Command-W
来关闭模态对话框,因为这肯定违反了Apple的一些界面指南。 (特别是,正如Ande指出的那样,标准做法是让Esc关闭/取消对话。)
添加一个不可见的按钮工作得很好。
对话是NSWindow
吗? 因为默认情况下, File->Close
菜单选项设置为第一响应者的performClose:
动作,并且已经连接到command-w
如果该对话框不是一个窗口,只需使对话框首先响应并执行performClose:
操作即可。
上一篇: How to make a keyboard shortcut to close dialog with Xcode/Interface Builder?
下一篇: How to dismiss keyboard for UITextView with return key?