0

画面に写真があり、持っているとフルサイズで表示したいです。ジェスチャ認識エンジンは次のとおりです。

        UILongPressGestureRecognizer *hold = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(hold:)];
        hold.minimumPressDuration = 0;

        [self.photoImageView addGestureRecognizer:hold];

そして、ここにリスナーがあります:

-(void)hold:(UILongPressGestureRecognizer *)sender{
    UIImageView *img = [[UIImageView alloc] initWithImage:self.photo];
    img.userInteractionEnabled = NO;

    if(sender.state == UIGestureRecognizerStateBegan){
        NSLog(@"state began");
        [self.view addSubview:img];
    } else if (sender.state == UIGestureRecognizerStateEnded){
        NSLog(@"state ended");
        [img removeFromSuperview];
    }
}

画像は画面に正しく追加されますが、[img removeFromSuperview]応答していないようです。これが起こる理由はありますか?終了状態の NSLog は正しく起動しています。

4

2 に答える 2

2

これは、表示されているものを削除するのではなく、UIImageView の新しいインスタンスを作成しているためです。

-(void)hold:(UILongPressGestureRecognizer *)sender{

    if(sender.state == UIGestureRecognizerStateBegan){
        NSLog(@"state began");

        UIImageView *img = [[UIImageView alloc] initWithImage:self.photo];
        img.tag = IMAGE_VIEW_TAG;
        img.userInteractionEnabled = NO;
        [self.view addSubview:img];

    } else if (sender.state == UIGestureRecognizerStateEnded){
        NSLog(@"state ended");
        UIImageView *img = [self.view viewWithTag: IMAGE_VIEW_TAG];
        [img removeFromSuperview];
    }
}
于 2013-05-17T08:05:16.557 に答える