cocos creator的挂后台问题

cc.eventManager.addCustomListener(cc.game.EVENT_HIDE, function(){
cc.log(“游戏进入后台”);
});
cc.eventManager.addCustomListener(cc.game.EVENT_SHOW, function(){
cc.log(“重新返回游戏”);
});

我们测试发现一个问题,就是在游戏中 下拉ios的状态栏,并不会走cc.game.EVENT_HIDE消息。
但是 滑动事件
cc.Node.EventType.TOUCH_MOVE会执行
cc.Node.EventType.TOUCH_END消息会收不到

比如我在滑动一个物体 这个时候下拉ios的状态消息 就不会收到touchend事件
这样我就不知道后台被终止了,无法处理一些逻辑问题

反馈 Bug 时请提供

  • Creator 版本:1.5.2
  • 目标平台:(Web / iOS / Android / 模拟器) IOS 和部分android设备
  • 详细报错信息,包含调用堆栈:
  • 重现方式:
  • 之前哪个版本是正常的(可选):
  • 手机型号(可选):iphone 6 ios11
  • 手机浏览器(可选):
  • 编辑器操作系统(可选):
  • 编辑器之前是否有其它报错(可选):

偶现 Bug 请提供

  • 出现概率:100%
  • 额外线索:(场景节点规模 / 项目资源规模等)

是网页还是原生平台?

原生平台,ios的百分百复现,你往下拉状态栏。

hi 不知道 我的描述您是否听明白了?

我尝试了一下,iOS 原生构建出来以后,要从屏幕外从上向下拉一次,才会出现一个小标签,再拉标签才会出现状态栏。而这个标签出来之后,应用内的触摸响应都会失效,所以没能重现你说的问题。可以说一下是不是跟你们操作不同,或者录一小段视频

hi,panda
是这样的,我滑动游戏的一个物体,这个时候触发move了(不松手),然后我再下拉状态栏 ,再拉标签,
这个时候 cc.Node.EventType.TOUCH_END消息会收不到
cc.eventManager.addCustomListener(cc.game.EVENT_HIDE, function(){
cc.log(“游戏进入后台”);
});也不会走

这样逻辑就无法处理了

hi panda 昨天我的表述 您这边可以浮现吗?

还需要监听 cc.Node.EventType.TOUCH_CANCEL 。

这个问题应该在iOS11上很好出现,creator1.7之前的版本在iOS11上 上滑 下拉都会直接打开控制中心或者通知中心不会先出小箭头。我们的App里面也遇到这个问题。目前只是新增了处理iOS11里面关于控制区域的函数(preferredScreenEdgesDeferringSystemGestures) 但是并没有彻底解决这个问题。在出现小箭头后继续操作 事件仍然会得不到响应

hi是监听的,挂后台收不到cancle消息了。这个是我们想要你们看看的

其实很困难才可以重现,因为在一只手指按下的情况下,非常难拉出来控制中心,不知道是不是理解错了你说的重现方法,偶尔拉出来也不一定可以重现 touch 事件丢失的问题。 有没有操作的视频可以让我们看看

看到你的视频,我感觉好像完全理解错了,视频中的操作是

  1. 拉出控制中心/切到后台
  2. 回到游戏
  3. 开始拖动牌到桌上,松开手指
  4. 牌没有执行落下操作

你们认为是 TOUCH CANCEL 没有执行,这个行为最好是给你们拖动牌的 demo 才好确定重现你们的问题,否则我们自己试来试去可能跟你们的判断逻辑完全不同,不一定能够重现