Objective c NSWindowController键控方法播放声音
我希望能够仅使用键在NSWindowController中使用tableview。上下键已经起作用了,所以我只需要输入键来选择。我使用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 } 它工作正常,唯一的问题是,每当我按下回车键,电脑就会播放系统声音。有人知道我怎样才能使声音静
- (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声音”的原因是,当您转发事件时,它不会在任何地方结束,除非它由上述事件处理程序处理。