-(void)didMoveToView:(SKView *)view
{
UITapGestureRecognizer* doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(doubleTap:)];
doubleTapGestureRecognizer.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:doubleTapGestureRecognizer];
}
-(void)doubleTap:(id)sender
{
NSLog(@"double tap");
}
我正在使用它为我的SKView添加手势识别器。它工作正常,当我双击时双击,但当我触摸屏幕并移动我的手指时,应用程序崩溃时出现此错误:
[UITapRecognizer name]: unrecognized selector sent to instance 0x1756c600
为什么会这样?我没有打电话给任何"名字"这个识别器上的选择器。
我有这个方法:
#pragma mark - SKPhysicsContactDelegate
-(void)didBeginContact:(SKPhysicsContact *)contact
{
if(![contact.bodyA.node.name isEqualToString:@"player"])
{
[contact.bodyA.node performSelector:@selector(removeFromParent) withObject:nil afterDelay:1];
}
if(![contact.bodyB.node.name isEqualToString:@"player"])
{
[contact.bodyB.node performSelector:@selector(removeFromParent) withObject:nil afterDelay:1];
}
}
我注意到如果我对此进行评论,则没有这样的错误,但之后我将其替换为:
-(void)didBeginContact:(SKPhysicsContact *)contact
{
if(![contact.bodyA.node respondsToSelector:@selector(name)])
{
NSLog(@"%@ , %@ \n",contact.bodyA, contact.bodyA.node);
}
if(![contact.bodyB.node respondsToSelector:@selector(name)])
{
NSLog(@"%@ , %@",contact.bodyB, contact.bodyB.node);
}
}
并且调试日志中没有任何内容,只是相同的错误。发生了什么事?
答案 0 :(得分:1)
原来是 - >的副本UITapGestureRecognizer causes app to crash
“我在我的一个SpriteKit游戏中遇到了同样的问题,它是在场景转换过程中使用手势时引起的,我通过在转换之前将gestureRecognizer.enable属性(文档)设置为NO来解决它。” 答案有帮助