我是OSx开发的新手。
我有一个使用Webview的Cocoa应用程序。除了webview中的文本字段外,一切正常。我知道如何在NSTextField中启用击键,而不是在Webview中启用击键。我整天都在网上搜索,但没有运气。 我非常需要一些关于如何启用击键来实现键盘快捷键的帮助。
示例:
复制 - >命令+ c
粘贴 - >命令+ v
cut - >命令+ x
非常感谢任何帮助。
答案 0 :(得分:1)
我现在得到了答案。我意识到我忘了实施
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
到处理Webview的类。
答案 1 :(得分:0)
@Kimpoy,感谢您对performKeyEquivalent的引用! 为了完整起见,我用这种方式实现了......
从WebView对您的webview进行子类化并实现该方法:
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent {
NSString * chars = [theEvent characters];
BOOL status = NO;
if ([theEvent modifierFlags] & NSCommandKeyMask){
if ([chars isEqualTo:@"a"]){
[self selectAll:nil];
status = YES;
}
if ([chars isEqualTo:@"c"]){
[self copy:nil];
status = YES;
}
if ([chars isEqualTo:@"v"]){
[self paste:nil];
status = YES;
}
if ([chars isEqualTo:@"x"]){
[self cut:nil];
status = YES;
}
}
if (status)
return YES;
return [super performKeyEquivalent:theEvent];
}
在这里感谢@aventurella:https://github.com/Beats-Music/mac-miniplayer/issues/3。只需略微修改以将超级响应作为默认值返回,因为它应向下传播到其子视图。
作为备注,我建议您在自定义网页浏览中实施日志或类似内容,以确保您真正与您的班级合作:
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
NSLog(@"Custom webview running...");
}