iOS - 无法与 Cordova webview 内容交互

标签 ios xcode cordova webview viewcontroller

因此,我在 UIViewController 中添加了一个 CDVViewController,它呈现 Cordova 应用程序的索引页面。我添加了一个链接(稍后我将尝试将其解释为 Objective-C 功能。)和一个按钮。当我加载索引时,我可以单击按钮和链接并看到视觉响应。然而,当它由 CDVViewController 渲染时,它不会。我已经在下面包含了我的 Controller 和 index.html 代码,但我也无法使用 Cordova-iOS MainViewController 类与内容进行交互。有人知道我该如何解决这个问题吗?

这些是我试图用来实现这一目标的引用资料。

https://cordova.apache.org/docs/en/2.2.0/guide/cordova-webview/ios.html

How to invoke Objective C method from Javascript and send back data to Javascript in iOS?

MyViewController.h

#import <UIKit/UIKit.h>
#import <Cordova/CDVViewController.h>

@interface MyViewController : UIViewController{

}
@property (strong, nonatomic) IBOutlet UIView *MyPlaceholderView;

@end

MyViewController.m

#import "MyViewController.h"

@interface MyViewController ()

@end

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}


- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    CDVViewController* viewController = [CDVViewController new];
    viewController.view.frame = _MyPlaceholderView.frame;
    [self.view addSubview:viewController.view];
}
@end

index.html

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Hello World</title>
    </head>
    <body>
            <a class="MyButton" href="req://LoadNativeContent">Load Native Content</a>
            <button id="button" style="width:100%; height:100px;"> Button 1 </button>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>
</html>

最佳答案

Alec,如果您想要实现的是从 webview 内的按钮执行 native iOS 代码,正确的方法应该是创建一个 cordova 插件并通过 javascript 接口(interface)公开 native 代码。 您可以在此处找到有关如何执行此操作的详细信息:

https://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/index.html

希望对你有帮助!

关于iOS - 无法与 Cordova webview 内容交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37053527/

相关文章:

ios - 相机图像旋转问题

ios - 解析JSON数据的JSON结构

python - 如何使用 Appium 或命令行(无越狱)使用密码解锁 iOS 设备

ios - 文档目标开始生成 "Objective-C garbage collection is no longer supported"

iphone - 新手难以理解选择器

javascript - 如何使用 cordova 处理混合移动应用程序的后退按钮功能

iphone - "Unrasterize"UIView层

ios - 如何在 iOS 模拟器上进行全屏截图

android - PhoneGap 在尝试构建 Android APK 时构建 Give Error

ios - 当应用程序通过应用程序商店更新时,在cordova应用程序中保留本地存储