Kel*_*ald 5 cocoa interface-builder webview first-responder
(编辑以更好地描述我给出的答案)
我在InterfaceBuilder中创建了一个非常简单的浏览器,它包含一个导航栏和一个webview.
一切正常,除非我尝试在输入字段之间选项卡是webview,焦点转到导航栏.
我假设我需要对响应者链做一些事情,但我无法弄清楚是什么.
有什么建议?
谢谢,凯莉
Kel*_*ald 13
世界上可能没有其他人关心这一点,但我会回答它,以防有人在某些时候需要这个.
正如我在评论中提到的,我使用卡布奇诺框架,实际上我遇到了3个不同的问题.
让我给你这里的设置.
我正在创建一个嵌入了WebView的可可应用程序,并在其中加载带有卡布奇诺应用程序的页面.首先,字段之间的标签对任何网页上的任何表单都不起作用.
第二个问题是dom事件中的keyCode和charCode与cocoa中的WebView与Safari不同.事实证明,有一种叫做"键盘怪癖"的模式.如果您_needsKeyboardEventDisambiguationQuirks在
WebView ObjC类源中查找,您将看到它为safari创建了一个例外,将其关闭.它应该为旧版本的WebKit关闭它,但事实并非如此.看看webkit bug 32694
为了解决这个问题,我不得不做两件事.a)覆盖_needsKeyboardEventDisambiguationQuirks以便它返回NO b)如果在覆盖该方法时已经实例化了WebView,则还需要调用[[webviewinstance preferences] _postPreferencesChangesNotification]以使其工作.然后,这使您的WebView像Safari一样发送DOM事件.
最后,cappuccino正在查看用户代理字符串以确定如何处理某些内容.它正在检查WebKit和Safari.我试用了safari用户代理字符串并将其设置为WebView的自定义用户代理字符串.
[mywebviewinstance setCustomUserAgent: @"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4"]
Run Code Online (Sandbox Code Playgroud)最后,一切都像在野生动物园中一样.
希望这有助于某人!