在我的应用程序中,我显示一张带有NSComboBox的工作表。如果用户使用箭头键从菜单中选择一个条目然后返回以选择它,则表单的OK按钮也会被操作,因为它具有Return作为其等效键。我想停止这些返回键作为OK点击。
在尝试了很多事情之后(除了继承NSComboBox的子类,它开始变成一场噩梦)我试图忽略OK点击如果组合框是第一个响应者并且当前事件是返回键键,但是NSPanel表示sheet是子类的,总是将自身返回为当前的第一响应者。我期待着一个现场编辑器,但我得到的只是NSPanel
1)有更好的方法吗?用户真的想要基于键盘的数据输入而不是鼠标移动
2)如果这是最好的方法,我怎么能告诉组合框是第一个响应者呢?
任何帮助都感激不尽。当然这已经处理过了?
安迪牧师
答案 0 :(得分:1)
有一种解决方法,它不漂亮,但它会起作用:
注册通知 NSComboBoxWillPopUpNotification 和 NSComboBoxWillDismissNotification 。
- (void)comboBoxWillPopUp:(NSNotification *)notification
{
okButton.keyEquivalent = @"";
}
- (void)comboBoxWillDismiss:(NSNotification *)notification
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0), dispatch_get_main_queue(), ^{
okButton.keyEquivalent = @"\r";
});
}