2013-05-17 4 views
0

У меня есть фотография на экране, которая, когда она хранится, я хочу показать на полном размере. Вот жест распознаватель:Не удается удалить изображение изнутри UIGestureRecognizer?

 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 для конечного состояния правильно отключается.

ответ

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]; 
    } 
} 
-1

Вам не нужно создавать новые imageview в действии жест в. Просто добавьте или удалите self.photoImageView

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

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

Извините, self.photoImageView уже на экране. Его миниатюрная версия изображения, которую я хочу в полноэкранном режиме. – user339946

Смежные вопросы