你如何从 Cordova iOS 插件中实现 UIWebViewDelegate?

How do you implement UIWebViewDelegate from a Cordova iOS plugin?

我有一个现有的 Cordova 应用程序,我在其中手动修改了 MainViewController.m 以添加我自己的 UIWebViewDelegate 实现——但是,我想以 "right" 的方式进行此操作并且使用插件(这样我就可以真正将平台代码视为构建工件)。

this guide 开始,我发现我应该能够从我的插件代码中设置我的 UIWebViewDelegate;但是,这是行不通的。我的实现没有被调用。

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

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

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

在咨询了 Cordova 的一些人之后,这似乎是一个错误:

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

补丁已提交并接受 cordova-ios 的未来版本。

对于将来希望这样做的任何其他人,我的建议是让您的 UIWebViewDelegate 实现存储指向 UIWebView 上的前一个委托集的指针,并将所有方法转发给那个代表。这是 Cordova 正常工作所必需的,如果您没有 copying/pasting 现有委托的功能到您自己的功能中。