小编Bre*_*ret的帖子

iOS模拟器在随机一段时间后会停止正确识别手势

对不起,这有多久了。寻找任何人可能拥有的指针对我来说都是一个谜。

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

1
推荐指数
1
解决办法
206
查看次数