NSComboBox - 陷阱返回键

时间:2013-03-04 14:35:56

标签: objective-c xcode nscombobox

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

1 个答案:

答案 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";
    });
}