cordova - 如何从 Cordova iOS 插件实现 UIWebViewDelegate?
问题描述
我有一个现有的 Cordova 应用程序,我已经手动修改MainViewController.m
以添加我自己的UIWebViewDelegate
实现 - 但是,我想以“正确”的方式执行此操作并使用插件(因此我可以真正将平台代码视为构建工件) .
从本指南中,我看到我应该能够UIWebViewDelegate
从我的插件代码中设置我的;但是,这不起作用。我的实现没有被调用。
在代码CDVViewController
中,无论传入什么,它似乎总是使用作为委托。
这是一个错误吗?我只是做错了吗?这样做的正确方法是什么?
我在这里的场景是捕获didFailLoadWithError
事件以进行一些特殊处理(我们的 Cordova 应用程序使用远程资源,如果它们不加载,我想允许重试选项)。当我直接修改应用程序源时,这工作得很好。
解决方案
在与科尔多瓦人协商后,这似乎是一个错误:
https://issues.apache.org/jira/browse/CB-14076
一个补丁已经提交并被接受用于未来的cordova-ios
.
对于希望在未来执行此操作的任何其他人,我的建议是让您的UIWebViewDelegate
实现存储指向上一个委托集的指针UIWebView
,并将所有方法转发给该委托。如果您没有将现有委托的功能复制/粘贴到您自己的功能中,则 Cordova 需要这样做才能正常工作。
推荐阅读
- html - 如何创建媒体规则以水平居中绝对 div?
- sql-server - Microsoft SQL Server,具有特定优先级的出列消息
- sql-server - MS SQL Server - 存储过程效率
- input - 颤振输入装饰后缀图标未出现但始终显示十字符号
- copy-paste - 如何在 VMware 工作站和主机之间启用复制/粘贴
- python - 如何显示来自用户的总正整数的总和并在输入负整数后停止?
- middleware - Nuxt.js 中间件 this._router.init 不是函数
- node.js - UnhandledPromiseRejectionWarning: MongoError: The argument to $each in $push must be an array but it is of type: object
- neo4j - 安装问题后请选择neo4j中您要存储应用程序数据的路径
- php - 如何使用来自 html 表单的输入安全地更新数据库中的表?