-(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);
}
}
デバッグログには何もありません。同じエラーです。何が起こっている?