我在简单/普通的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`
但从未调用过该动作。
答案 0 :(得分:3)
您必须在视图层次结构中继承WebView或上面的任何视图,其中WebView是子视图并覆盖NSView的 NSResponder 方法; 特别是acceptFirstResponder:和canBecomeFirstResponder:。然后实现keyUp:或keyDown:或者你感兴趣的NSResponder的任何事件方法。
这至少应该省略NSBeep。
为了拦截WebView内部更深层的事件(用于剪切/粘贴/等),WebView本身也提供了几种覆盖方法,但我认为必须采取额外的步骤来相应地拦截事件。抱歉这里含糊不清。
你提到的 webView:shouldPerformAction:fromSender 并不是你所期望的。 WebUIDelegate Protocol表示此方法“返回一个布尔值,指示是否应执行指定对象发送的操作。” - 但 WebUIDelegationProtocol 方法仅在处理JavaScript或其他插件内容时“调用”。这意味着shouldPerformAction:只有在网站本身(JS或插件)触发时才会被调用,而不会在NSResponder事件发生时被调用。