Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSWindowController键控方法播放声音_Objective C_Xcode_Macos_Nswindowcontroller - Fatal编程技术网

Objective c NSWindowController键控方法播放声音

Objective c NSWindowController键控方法播放声音,objective-c,xcode,macos,nswindowcontroller,Objective C,Xcode,Macos,Nswindowcontroller,我希望能够仅使用键在NSWindowController中使用tableview。上下键已经起作用了,所以我只需要输入键来选择。我使用NSWindowController中的键控方法执行此操作: - (void)keyUp:(NSEvent *)the Event { if (theEvent.keyCode == 36) // Enter key // Do stuff } 它工作正常,唯一的问题是,每当我按下回车键,电脑就会播放系统声音。有人知道我怎样才能使声音静

我希望能够仅使用键在NSWindowController中使用tableview。上下键已经起作用了,所以我只需要输入键来选择。我使用NSWindowController中的键控方法执行此操作:

- (void)keyUp:(NSEvent *)the Event {
    if (theEvent.keyCode == 36) // Enter key
         // Do stuff
}

它工作正常,唯一的问题是,每当我按下回车键,电脑就会播放系统声音。有人知道我怎样才能使声音静音,或者有其他方法吗?

你必须调用
[super-keyUp:theEvent]默认值

好的,下面是我为任何想知道的人静音所做的。为视图创建自定义类并重写此方法:

- (BOOL)performKeyEquivalent:(NSEvent *)theEvent {
    [super performKeyEquivalent:theEvent];
    return YES;
}

我补充说,但声音仍在播放。是否有某个地方需要添加它?请确保对keyDown方法也这样做,这样我才意识到即使我没有覆盖keyUp,声音仍然会播放。因此,问题一定与我的窗口有关,而不是事件。您知道可能出现什么问题吗?视图必须允许接受第一响应者,并且您必须执行[超级键控:事件];在每个superview.Or中,您可以使用NSEvent.addLocalMonitorForEventsMatchingMask([.KeyUpMask],handler:onKeyUp)添加一个事件处理程序方法,然后在onKeyUp方法中返回nil,得到“funk声音”的原因是,当您转发事件时,它不会在任何地方结束,除非它由上述事件处理程序处理。