首页 > 解决方案 > 如何从 Cordova iOS 插件实现 UIWebViewDelegate?

问题描述

我有一个现有的 Cordova 应用程序,我已经手动修改MainViewController.m以添加我自己的UIWebViewDelegate实现 - 但是,我想以“正确”的方式执行此操作并使用插件(因此我可以真正将平台代码视为构建工件) .

本指南中,我看到我应该能够UIWebViewDelegate从我的插件代码中设置我的;但是,这不起作用。我的实现没有被调用。

代码CDVViewController中,无论传入什么,它似乎总是使用作为委托。

这是一个错误吗?我只是做错了吗?这样做的正确方法是什么?

我在这里的场景是捕获didFailLoadWithError事件以进行一些特殊处理(我们的 Cordova 应用程序使用远程资源,如果它们不加载,我想允许重试选项)。当我直接修改应用程序源时,这工作得很好。

标签: cordovacordova-pluginscordova-ios

解决方案


在与科尔多瓦人协商后,这似乎是一个错误:

https://issues.apache.org/jira/browse/CB-14076

一个补丁已经提交并被接受用于未来的cordova-ios.

对于希望在未来执行此操作的任何其他人,我的建议是让您的UIWebViewDelegate实现存储指向上一个委托集的指针UIWebView,并将所有方法转发给该委托。如果您没有将现有委托的功能复制/粘贴到您自己的功能中,则 Cordova 需要这样做才能正常工作。


推荐阅读