如何制作键盘快捷键来关闭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:操作即可。

链接地址: http://www.djcxy.com/p/19097.html

上一篇: How to make a keyboard shortcut to close dialog with Xcode/Interface Builder?

下一篇: How to dismiss keyboard for UITextView with return key?