将 javascript 事件字符串调用到原生 iOS 日历 iPHone

Posted

技术标签:

【中文标题】将 javascript 事件字符串调用到原生 iOS 日历 iPHone【英文标题】:calling javascript event strings in to native iOS calendar iPHone 【发布时间】:2014-03-06 09:40:09 【问题描述】:

我们已经在 phonegap 环境中开发了 iPhone 应用程序。我想在 Objective-C Xcode 中调用下面的 javascritpt 函数来在原生 ios 日历中创建一个事件。

//calendar.js

var calendarPlugin = 
createEvent: function(title, location, notes, startDate, endDate, successCallback, errorCallback) 
    cordova.exec(
        successCallback, // success callback function
        errorCallback, // error callback function
        'CalendarPlugin', // mapped to our native Java class called "CalendarPlugin"
        'addCalendarEntry', // with this action name
        [                  // and this array of custom arguments to create our entry
            "title": title,
            "description": notes,
            "eventLocation": location,
            "startTimeMillis": startDate.getTime(),
            "endTimeMillis": endDate.getTime()
        ]
    ); 
 

我有Objective C中日历事件的基本代码,我只需要将字符串值从javascript传递给这个日历事件Obj-c方法。在下面的 webview 方法中写什么

 - (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

【问题讨论】:

我有一些有用的解决方案链接。 github.com/felixactv8/Phonegap-Calendar-Plugin-ios 【参考方案1】:

我不确定日历部分,但这个可以帮助你。

确保您已经在 config.xml 中定义了插件

<feature name="CustomPlugin">
      <param name="ios-package" value="CustomPlugin" />
</feature>

使用Objective-C代码实现插件

CustomPlugin.h

#import <Foundation/Foundation.h>
#import <Cordova/CDV.h>

@interface CustomPlugin : CDVPlugin

- (void)sayHello:(CDVInvokedUrlCommand*)command;

@end

CustomPlugin.m

#import "CustomPlugin.h"

    @implementation CustomPlugin

    - (void)sayHello:(CDVInvokedUrlCommand*)command

        NSString *responseString =
            [NSString stringWithFormat:@"Hello World, %@", [command.arguments objectAtIndex:0]];

        CDVPluginResult *pluginResult =
            [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:responseString];

        [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
    

    @end

从 JavaScript 调用插件

function initial()
    var name = $("#NameInput").val();
    cordova.exec(sayHelloSuccess, sayHelloFailure, "CustomPlugin", "sayHello", [name]);


function sayHelloSuccess(data)
    alert("OK: " + data);


function sayHelloFailure(data)
    alert("FAIL: " + data);

【讨论】:

非常感谢朋友。你的答案几乎是正确的。虽然我已经按照这个链接“github.com/felixactv8/Phonegap-Calendar-Plugin-ios”来解决。

以上是关于将 javascript 事件字符串调用到原生 iOS 日历 iPHone的主要内容,如果未能解决你的问题,请参考以下文章

如何将鼠标事件调用到 javascript 中位于其他对象后面的 dom 对象?

JavaScript使用事件循环在调用堆栈

纯js 原生JavaScript实现字符串长度截取

使用JavaScript调用手机平台上的原生API

javaScirpt事件详解-原生事件基础

如何编写重用通用 JavaScript 代码的反应原生“本机模块”(桥)?