对不起,这有多久了。寻找任何人可能拥有的指针对我来说都是一个谜。
iOS模拟器中似乎存在一个错误,即UIGestureRecognizers如何工作并传递接触点,该接触点一直持续到模拟器重新启动为止。即使杀死该应用程序并在模拟器中重新启动它也无法修复它。修复它的唯一方法(暂时)是完全退出模拟器并重新启动它。
我在UIViewController子类中有一个SKView子类。SKView子类占据UIViewController的底部,顶部包含一些按钮和其他控件。游戏涉及由UIGestureControllers管理的轻击和平移,UIGestureControllers由拥有SKScene子类的SKView子类拥有。
在任意一段时间后,手势将停止正常工作。在SKScene拥有的视图中,没有一个可以正确识别。如果我在SKView外部单击并在父UIViewController中单击,则会显示它们,但坐标全都错了。它还会导致状态错误-有时UIPanGestureRecognizer认为按下了两个手指,而不是只有一个。UIPanGestureRecognizer同样处于关闭状态。这种行为没有可识别的模式-它只是突然开始的。
这是初始化SKView及其场景的相关代码:
SKView * _gameView = [[SKView alloc] initWithFrame : gameRect];
_gameView.clipsToBounds = YES;
// _gameView.scene is an SKScene subclass
CGSize gameSize = CGSizeMake(_gameView.bounds.size.width,
_gameView.bounds.size.width);
_scene = [[GameScene alloc] initWithSize : gameSize];
// Present the scene.
[_gameView presentScene : _scene];
[self.view addSubview : _gameView];
Run Code Online (Sandbox Code Playgroud)
这是SKScene子类中注册UIGestureControllers的代码:
- (void) initializeGestureRecognition : (SKView *) view
{
UIPanGestureRecognizer * panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget : self action : @selector (handlePanGesture:)];
UITapGestureRecognizer * tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget : self action : …Run Code Online (Sandbox Code Playgroud) simulator objective-c ios uitapgesturerecognizer uipangesturerecognizer