【问题标题】:Tapping the very bottom of the screen causes lag/delay in touchesBegan点击屏幕的最底部会导致 touchesBegan 的滞后/延迟
【发布时间】:2014-04-23 10:23:45
【问题描述】:

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

hud 层只有一个 SKSpriteNode(alpha 色)和几个用于得分和级别的 SKLabelNodes,点击屏幕上的任何位置(除了小得分区域)会导致即时 touchesBegan 事件触发(fab)但是.. . 在 touchesBegan 触发之前点击底部的小 hud 得分区域会导致延迟/延迟。

SKSpriteNode 或标签是否会捕获 touchesBegan 事件或其他什么并导致延迟?

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

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

【问题讨论】:

  • 您可能正在点击控制中心区域(您可以从底部向上滑动来更改 wifi、亮度和其他设置)。控制中心在内部使用手势识别器。我相信有一些方法可以解决这个问题,一种解决方法是通过“设置”应用禁用应用中的控制中心。
  • 感谢您的回复。我确实考虑过这一点,但我认为 nnaaarrr 肯定不会影响我的应用程序,但如果你可以将其关闭,那么这是我将尝试的第一件事。不过,点击最左下角或右下角仍然会导致延迟。最终我可能会将分数区域移到顶部,但想先解决这个问题,让其他人获得相同的行为。

标签: ios delay sprite-kit lag touchesbegan


【解决方案1】:

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

点击屏幕底部仍然会导致延迟。

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

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

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

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

- (BOOL) prefersStatusBarHidden
{
    return YES;
}

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

【讨论】:

  • 请有人接受我的回答,因为我正在尝试评论其他人的问题,目前不能。
【解决方案2】:

在我的 AppDelegate 的 didFinishLaunchingWithOptions 函数中添加这个:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多