我有一个场景,有多个层(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
}
}