敲击屏幕最底部会导致触摸延迟



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

hud层只有一个SKSpriteNode(阿尔法色)和几个SKLabelNode用于分数和级别,点击屏幕上的任何地方(除了小分数区域)都会导致即时触摸。开始触发事件(fab)但是。。。在底部的小hud得分区域敲击会在触球前产生滞后/延迟Began开火。

SKSpriteNode或Labels是否会捕获touchesBegan事件或其他事件并导致延迟?

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

这是最接近我问题的帖子,但我的应用程序代理中没有任何手势识别器。精灵套件触摸:延迟/滞后

我试着将评分面板(SKSpriteNode和Labels)从屏幕底部移开,触摸它们不再产生滞后。(所以不是他们!)

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

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

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

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

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

- (BOOL) prefersStatusBarHidden
{
    return YES;
}

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

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

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

为我修复了屏幕底部的触摸延迟

SWIFT

正如Sean O’connor正确地说的那样,把它放在AppDelegate的didFinishLaunchingWithOptions函数中。

if let recognizers = window?.gestureRecognizers {
        for gesture in recognizers {
            gesture.delaysTouchesBegan = false
        }
}

最新更新