你如何从 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 现有委托的功能到您自己的功能中。
我有一个现有的 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 现有委托的功能到您自己的功能中。