1

我正在尝试为 WKWebView 创建 WKNavigationDelegate,但无法调用decisionHandler. 有谁知道如何做到这一点?

ObjC.registerSubclass({
    name: "test",
    methods: {
        "webView:decidePolicyForNavigationAction:decisionHandler:": {
             types: ["void", ["id", "id", "id"]],
             implementation: function(wv, navigationAction, decisionHandler) {
                 decisionHandler($.WKNavigationActionPolicyAllow);
                 return;
            }
        }
    }
});
var delegate = $['test'].alloc.init;
webView.navigationDelegate = delegate;

decisionHandler该代码一直工作到它阻止导航操作但未被调用的地步!

在控制台中,我得到了日志:

Completion handler passed to -[test webView:decidePolicyForNavigationAction:decisionHandler:] was not called

将类型从“id”更改为“block”或“function”不起作用。

4

1 回答 1

1

我会添加一条评论,但令人困惑的 SO 规则禁止新手回答(?!)。添加protocols: ['WKNavigationDelegate']到注册有帮助吗?正在调用您的方法,并且 $.WKNavigationActionPolicyAllow 显示为 == 1,但也许该协议将协助 JSC 进行类型推断。

于 2016-01-05T02:45:56.783 回答