无法从appdelegate的handleOpenURL调用sencha触摸功能

时间:2014-06-27 17:45:35

标签: javascript ios objective-c extjs sencha-touch

我正在尝试调用maincontroller.js中名为handleOpenURL的sencha touch函数 来自ios的appdelegate.m

 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
    {
    NSString* jsString = [NSString stringWithFormat:@"handleOpenURL(\"%@\");", url];

    [self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString];

    return [super application:application handleOpenURL:url];
    }

但它被称为

MainController.js

handleOpenURL: function(url)
{
    console.log(url);
}

2 个答案:

答案 0 :(得分:0)

url不是字符串。尝试在你的jsString中使用[url absoluteString]而不是url。

答案 1 :(得分:0)

我通过在sencha touch“MainController.js”中创建一个全局变量并将当前“this”分配给全局变量

来修复我面临的问题

ex:var that = this;

然后从appdelegate的handleOpenURL方法

访问它
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    if (!url)
        return NO;

    NSString* jsString1 = [NSString stringWithFormat:@
                           "setTimeout(function () { \n"
                           "that.handleOpenURL(\"%@\"); \n"
                           "},1000);", url.host];

    [self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString1];


    return YES;
}