-1

화면을 누르면 uiimageview를 만들고보고 싶습니다. 나는 손가락을 들어 올리기 전에 uiimageview를 화면 주위로 움직이고 손가락을 뗄 때만 이미지를 설정하려고합니다. Heres는 내가 무슨 짓을했는지 :UITapGestureRecognizer 및 UIPanGestureRecognizer

- (IBAction)tap:(UITapGestureRecognizer *)recognizer { 

    CGPoint location = [recognizer locationInView:self.view]; 

    UIImageView *circle = [[UIImageView alloc] initWithFrame:CGRectMake(location.x, location.y, 50, 50)]; 
    circle.userInteractionEnabled = YES; 
    [circle setImage:[UIImage imageNamed:@"monkey_1.png"]]; 
    [self.view addSubview:circle]; 

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:circle action:nil]; 
    [recognizer requireGestureRecognizerToFail:pan]; 

    CGPoint translation = [pan translationInView:circle]; 
    pan.view.center = CGPointMake(pan.view.center.x + translation.x, pan.view.center.y + translation.y); 
    [pan setTranslation:CGPointMake(0, 0) inView:self.view]; 
} 
+0

이렇게하면 단일 제스처로하는 것이 더 쉬울 것입니다. 길게 누르는 제스처를 만들고 그 행동에 상태를 감지하십시오. 시작하면 이미지를 보여줄 것이고, 변경하면 이미지를 옮길 것이고, 끝 부분을 정리할 것입니다. – farski

답변

0

당신은 단지 UIPanGestureRecognizer 또는 UILongPressGestureRecognizer이 작업을 수행 할 수 있습니다. 제스처 처리 방법에서는 인식기의 state 속성을 확인하고 UIGestureRecognizerStateEnded 인 경우 (즉, 사용자가 화면에서 손가락을 뗄 때) 이미지를 표시합니다. 예 :

- (void)handleGesture:(UILongPressGestureRecognizer *)recognizer { 
    if(recognizer.state == UIGestureRecognizerStateEnded) { 
     // gesture ended: show the image 
    } 
    else if(recognizerState == UIGestureRecognizerStateBegan) { 
     // this code runs when the gesture is started. 
    } 
    else if(recognizerState == UIGestureRecognizerStateChanged) { 
     // gesture is in progress 
    } 
} 
관련 문제