激活WebView键盘事件

时间:2011-09-19 13:39:01

标签: objective-c cocoa webkit

我在简单/普通的NSWindow中有一个webview。

当我在WebView中加载网址时,如“http://google.com”,我无法与文本字段交互选择所有字符(cmd + a),剪切/粘贴(cmd + cv)等等。 / p>

如何激活默认的浏览器行为? 我的mac会发出经典的NSBeep()。

我尝试添加一个UIDelegate wich call

- (BOOL)webView:(WebView *)webView shouldPerformAction:(SEL)action fromSender:(id)sender`

但从未调用过该动作。

1 个答案:

答案 0 :(得分:3)

您必须在视图层次结构中继承WebView或上面的任何视图,其中WebView是子视图并覆盖NSView的 NSResponder 方法; 特别是acceptFirstResponder:和canBecomeFirstResponder:。然后实现keyUp:或keyDown:或者你感兴趣的NSResponder的任何事件方法。

这至少应该省略NSBeep。

为了拦截WebView内部更深层的事件(用于剪切/粘贴/等),WebView本身也提供了几种覆盖方法,但我认为必须采取额外的步骤来相应地拦截事件。抱歉这里含糊不清。

你提到的 webView:shouldPerformAction:fromSender 并不是你所期望的。 WebUIDelegate Protocol表示此方法“返回一个布尔值,指示是否应执行指定对象发送的操作。” - 但 WebUIDelegationProtocol 方法仅在处理JavaScript或其他插件内容时“调用”。这意味着shouldPerformAction:只有在网站本身(JS或插件)触发时才会被调用,而不会在NSResponder事件发生时被调用。