【问题标题】:Silence Cocoa error beep静音 Cocoa 错误提示音
【发布时间】:2023-04-03 08:07:01
【问题描述】:

我有一个 Cocoa 应用程序,它通过视图层次结构中的自定义视图捕获按键。此视图实现keyUpkeyDown 方法,并接收按键。即便如此,Cocoa 还是坚持每次按键都播放系统错误音/叮当。有什么解决办法吗?

注意:虽然我试图让这个视图成为第一响应者,但它不起作用。这可能与它有关。

【问题讨论】:

    标签: objective-c macos cocoa keyboard first-responder


    【解决方案1】:

    如果您尝试将视图设置为第一响应者但未成功,很可能是因为NSViewacceptsFirstResponder 返回了NO。您可以让您的 NSView 子类覆盖 acceptsFirstResponder 以返回 YES:

    - (BOOL)acceptsFirstResponder {
        return YES;
    }
    

    这应该消除哔哔声。或者,您可以让 NSView 子类覆盖 NSResponderperformKeyEquivalent: 方法以返回 YES,这也应该消除 NSBeeps:

    - (BOOL)performKeyEquivalent:(NSEvent *)event {
        return YES;
    }
    

    更新:

    不知道该建议什么。我实际上写了一个“键盘清洁助手”应用程序,它的设计基本上是为了做一些类似于你想要的事情。 (当我想清洁键盘时,我在笔记本电脑上使用了它,并且没有按数百次按键来随机重命名文件或导致重复的错误哔声)。

    示例项目:http://www.markdouma.com/developer/KeyboardCleanerHelper.zip

    运行该应用程序,我根本无法让它发出哔哔声(通知调用已记录到控制台)。

    【讨论】:

    • 现在是acceptsFirstResponder?哇。我现在不在我的 Mac 上,但我会尝试并接受。感谢您回答这个烦人的问题。
    • @Linuxios:“现在是acceptsFirstResponder”是什么意思?它曾经是什么?还是您可能指的是您尝试使视图成为第一响应者的方法?
    • 我以为是canBecomeFirstResponder。我现在在我的 Mac 上,我会试一试。
    • 没有雪茄我都做过,但都不起作用。 CNN 你还有什么想法?
    • 顺便说一句,我通过在我的界面中添加一个 NSTextView 来让它工作。奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多