在 iOS4.3 和 iOS 5 的 phonegap 中暂停和恢复监听器不工作

Posted

技术标签:

【中文标题】在 iOS4.3 和 iOS 5 的 phonegap 中暂停和恢复监听器不工作【英文标题】:pause and resume listeners not working in phonegap on iOS4.3 and iOS 5 【发布时间】:2012-05-17 10:26:46 【问题描述】:

我正在使用 ios 4.3 在 iPhone4 中制作原生应用

在我的正文 onLoad 我正在添加

document.addEventListener("pause", Game.prototype.pauseListener.bind(this), false);
document.addEventListener("resume", Game.prototype.resumeListener.bind(this), false); 

在同一个文件中我正在编写一个函数

Game.prototype.resumeListener= function()


    console.log("in resumeListener");
    this.PauseGame(false);


Game.prototype.pauseListener= function()

        this.PauseGame(true);


此代码在 android 中运行良好,当我手动最小化应用程序时,但当应用程序被语音来电中断时,应用程序不会暂停。

基本上不触发暂停和恢复事件。

我正在使用Phonegap1.4.1

【问题讨论】:

【参考方案1】:

我相信您的事件侦听器尚未建立,因为您在处理程序函数上使用了Object.bind(),而.bind() 在 iOS WebKit 小部件中不可用。 (这很令人惊讶,因为.bind() 在桌面 WebKit(Chrome 和 Safari)版本中可用。)

简单的解决方案是为 Object.bind() 添加一个 polyfill 定义。我用的是MDN bind documentation page的那个,没有任何问题。

【讨论】:

我已经为我的 js 文件覆盖了 bind 方法,并且 bind 和在纯 js 中应用一样好。它在 iOS 的其他地方运行良好。【参考方案2】:

抱歉,我还不能发表评论;)

您是否检查了其他两个事件(仅适用于 ios 的活动和退出)?更多信息:http://shazronatadobe.wordpress.com/2012/03/14/apache-cordova-lifecycle-events-in-ios-4-versus-ios-5/

或查看文档中的 iOS Quirks:http://docs.phonegap.com/en/1.6.1/cordova_events_events.md.html#pause

【讨论】:

即使这不起作用......它在锁定按钮的情况下工作但在呼叫的情况下不起作用。 为什么要使用bind(this)...不是已经是全局作用域了吗? 不,它不是一个全局函数......它只是那个 game.js 文件的一个局部函数......【参考方案3】:

您需要在 deviceready 中而不是在 onLoad 中添加您的侦听器。 就像这里一样

function onLoad() 
    document.addEventListener("deviceready", onDeviceReady, false);


function onDeviceReady() 
    document.addEventListener("pause", onPause, false);


function onPause() 

希望对你有帮助:)

【讨论】:

以上是关于在 iOS4.3 和 iOS 5 的 phonegap 中暂停和恢复监听器不工作的主要内容,如果未能解决你的问题,请参考以下文章

此代码适用于 iOS4.3 而不是 iOS5

NSFetchRequest 控制器在 iOS 5 上工作,在 iOS 4.3 上崩溃

ios 4.3 应用程序与 ios 5.0 的兼容性

在 IOS 5 中不显示颜色和数据

xcode 4.5 是不是支持 ios 4.3 模拟器或更早版本?

为啥 heightForHeaderInSection 在 iOS 4.3 中不起作用?