
[英]How to set the identifier for NSTableColumn in xcode 4 with interface builder?
[英]How to make a keyboard shortcut to close dialog with Xcode/Interface Builder?
这似乎非常基本,但在这里。 如果您是面向键盘的,那么您习惯于在 OS X 中一直使用 Command-W 来关闭窗口。我想将该功能添加到我在 Interface Builder 中为我的程序创建的对话框中。 我可以看到如何添加与按钮操作等效的键盘,但如果我没有按钮怎么办?
我应该添加一个不可见的按钮并将快捷方式放在上面吗? 看起来很笨重。 当然,我可以覆盖一些方法,但到目前为止我尝试过的方法不起作用。
当您按下Command + W时 ,它与从菜单栏中选择File -> Close
完全相同。 Close
作用是向第一个响应者发送performClose:
消息。 反过来,它将检查接收器或接收者的委托是否实现windowShouldClose:
,如果窗口返回YES
,窗口将关闭(否则,它将调用close
方法)。
所以,这取决于你在这里得到的对话类型。 如果它是非模态的(基本上,如果你可以在运行时访问菜单栏)并且是NSWindow
的实例或子类,那么你需要做的就是覆盖对话框委托中的windowShouldClose:
方法(或你的对话框类,如果你NSWindow
或其他东西)并让它返回YES
。
但是 ,如果对话框是模式对话框(在对话框运行时无法访问菜单栏,切换窗口等),则不能这样做。 你可以添加一个不可见的按钮,但是老实说,不应该通过Command-W
来关闭模态对话框,因为这肯定违反了一些Apple接口指南。 (特别是因为正如Ande所说,让Esc关闭/取消对话是标准做法。)
添加隐形按钮效果很好。
对话是NSWindow
吗? 因为默认情况下File->Close
菜单选项设置为第一个响应者的performClose:
action,并已连接到command-w
如果对话框不是窗口,只需使对话框成为第一个响应者并实现performClose:
action。
你为什么不试试这个:
-(void)keyDown:(NSEvent *)theEvent{
//If the key is X or x it just closes the window
if ([theEvent.characters.uppercaseString isEqualToString:@"X"]) {
[self.window performClose:self];
}
}
或者如果你想显示一个窗口,你可以实例化并在那里显示它而不是performClose
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.