iphone - 无法从 UIGestureRecognizer 中删除 imageView?

标签 iphone ios objective-c uikit

我的屏幕上有一张照片,当我拿着它时,我想以全尺寸显示。这是手势识别器:

        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 已正确触发。

最佳答案

这是因为您正在创建 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];
    }
}

关于iphone - 无法从 UIGestureRecognizer 中删除 imageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16604249/

相关文章:

ios - 有没有办法将 Swift 词典漂亮地打印到控制台?

ios - 获取操作时的 REstkit 错误

ios - @protocol 之前的 static 关键字

ios - 如何使用一个按钮跳转到不同的viewcontroller?

ios - 如何使用 CATransform3D 在 iOS 中从下到上对 View 进行动画处理

iphone - MKPinAnnotationView 自定义图像

iphone - 在模拟器中运行时,XCode 如何通知应用程序停止

ios - Firebase 嵌套规则

objective-c - fmdb 插入日期给出 "invalid date"

iphone - 从Wifi到3G —停止播放并且无法在iPhone开发中恢复