-1

Я хочу создать и увидеть uiimageview, когда я коснусь экрана. Прежде чем я подниму палец, я хочу переместить uiimageview вокруг экрана, и изображение будет установлено только тогда, когда я отдержу палец. Вот что я сделал: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 
    } 
} 
Смежные вопросы