PhoneGap应用程序不是iOS上的.live('tap')事件

时间:2011-06-15 01:24:49

标签: javascript jquery ios cordova jquery-mobile

我有一个应用程序正在使用在phonegap(0.9.5.1)上运行的jquery,jquerymobile和spine.js,并且在iOS上正常运行时遇到了一些问题。

应用程序应该在轻触div时启动相机。在我的控制器中,我有它,所以它做了类似于以下的事情:

myController = Spine.Controller.create({
    events: {"tap .take-picture": "takePic"},

    takePic: function(){
        var self = this;
        navigator.camera.getPicture(function(data){
            self.doStuffWith(data);
        }, 
        null,
        {quality: 50, destinationType: Camera.DestinationType.DATA_URL, sourceType: Camera.PictureSourceType.CAMERA})
    },

    doStuffWith: function(data){
        // Doing stuff with said data
    }
});

令我感到困惑的是,此代码在Android上正常运行。是否存在某种iOS怪癖,以便轻敲活动不会被正确发送?

2 个答案:

答案 0 :(得分:2)

我认为你正试图在iPhone应用程序中使用Android phonegap js。您需要确保为正在开发的平台包含正确的phonegap.js。虽然它们具有相同的名称,但每个版本的phonegap都是根据其主机操作系统量身定制的。

答案 1 :(得分:0)

这可能是几件事:

  1. 您正在iOS模拟器中对此进行测试。模拟器中没有Camera,你没有指定一个失败的回调,但是如果源类型不可用,那么API中的错误(我相信)它不会调用失败回调。您应该在运行日志(Cmd-Shift-R)中看到这个(“源类型不可用”)。

  2. 在设备上,我单独测试了你的代码,并在deviceReady()中运行它,它运行 - 所以API调用似乎是正确的。我在按钮上添加了一个触摸处理程序来调用代码,因此看起来点击事件正在运行。所以基于这些测试(在设备上):

  3. (a)API调用

    (b)点击事件工作

    这使我得出结论,这个错误超出了这两种可能性。