2013-05-17 3 views
0

나는 사진을 가지고있을 때 전체 크기로 표시하고 싶습니다.UIGestureRecognizer에서 imageView를 제거 할 수 없습니까?

 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

관련 문제