点击屏幕的最底部会导致touchesBegan的延迟/延迟

时间:2014-04-23 10:23:46

标签: ios delay sprite-kit lag touchesbegan

我有一个包含多个图层(SKNodes)背景,游戏层,前景和hud的场景,每个场景中都有多个SKSpriteNodes用于滚动和可以收集和点击的对象。

hud图层只有一个SKSpriteNode(alpha颜色)和几个SKLabelNodes用于分数和级别,点击屏幕上的任何位置(小分数区域除外)导致即时触摸开始事件触发(fab)但是...在触摸开始之前,在底部的微小的hud评分区域中点击会引入延迟/延迟。

SKSpriteNode或标签是否可能会捕获touchesBegan事件或导致延迟?

我将创建一个简化的项目来测试这个并发布我的发现,但是如果这个问题/查询得到回答,我认为这可能对其他人有所帮助。感谢。

这是我问题中最接近的帖子,但我的应用代表中没有任何手势识别器。 Sprite Kit touchesbegan: delay/lag

2 个答案:

答案 0 :(得分:1)

我尝试将得分面板(SKSpriteNode和标签)从屏幕底部移开,触摸它们不再产生延迟。 (所以不是他们!)

点击屏幕底部仍会造成延迟。

我可以确认LeanCocos2D建议控制中心导致延迟的现象。请参阅官方IOS7 UI指南中的摘录:

  

期望用户从屏幕底部向上滑动以显示   控制中心。如果iOS确定触摸开始于   屏幕下方应显示控制中心,它不提供   对当前正在运行的应用程序的手势。如果iOS确定了   触摸不应显示控制中心,触摸可能会略微   在到达应用之前延迟

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/transitionguide/Scoping.html

为了解决这个问题,因为我真的需要能够在屏幕底部点击快速响应的人在ViewController中包含以下代码:

- (BOOL) prefersStatusBarHidden
{
    return YES;
}

我真的希望这会有所帮助。

答案 1 :(得分:1)

将其添加到AppDelegate的didFinishLaunchingWithOptions函数中:

for (UIGestureRecognizer* gesture in _window.gestureRecognizers)
{
    gesture.delaysTouchesBegan=NO;
}

为我解决了屏幕底部的触摸延迟