我是 OSx 开发的新手。
我有一个使用 Webview 的 Cocoa 应用程序。一切正常,除了 webview 中的文本字段。我知道如何在 NSTextField 中启用击键,但在 Webview 中不知道。我整天都在网上搜索,但没有运气。我非常需要一些关于如何启用击键来实现键盘快捷键的帮助。
例子:
复制 -> 命令 + c
粘贴 -> 命令 + v
剪切->命令+ x
任何帮助将不胜感激。
我是 OSx 开发的新手。
我有一个使用 Webview 的 Cocoa 应用程序。一切正常,除了 webview 中的文本字段。我知道如何在 NSTextField 中启用击键,但在 Webview 中不知道。我整天都在网上搜索,但没有运气。我非常需要一些关于如何启用击键来实现键盘快捷键的帮助。
例子:
复制 -> 命令 + c
粘贴 -> 命令 + v
剪切->命令+ x
任何帮助将不胜感激。
我现在得到了答案。我意识到我忘了实施
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
到处理 Webview 的类。
@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 。只需稍作修改以将超级响应作为默认值返回,因为它应该向下传播到其子视图。
作为说明,我建议在您的自定义 webview 中实现日志或类似内容,以确保您确实在使用您的课程:
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
NSLog(@"Custom webview running...");
}