-1
-(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);
    }
}

デバッグログには何もありません。同じエラーです。何が起こっている?

4

1 に答える 1