2016-11-10 2 views
0

Я использую анимацию CABasic для перемещения UIImageView. UIImageView не обнаруживает прикосновения теперь, как включить взаимодействие пользователя после завершения анимации?Как включить взаимодействие в представлении изображения при завершении анимации

[ImageView setUserInteractionEnabled:NO]; 
CABasicAnimation *theAnimation; 
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; 
theAnimation.duration=1; 
theAnimation.repeatCount=1; 
theAnimation.autoreverses=NO; 

theAnimation.fromValue=[NSNumber numberWithFloat:0]; 
theAnimation.toValue=[NSNumber numberWithFloat:self.view.frame.size.width/2]; 

theAnimation.removedOnCompletion = NO; 
theAnimation.fillMode = kCAFillModeForwards; 

[CATransaction setCompletionBlock:^{ 
    NSLog(@"finished"); 
    self.view.userInteractionEnabled = true; 
}]; 
[ImageView.layer addAnimation:theAnimation forKey:@"slide"]; 
[CATransaction commit]; 
+3

Вы устанавливаете '[ImageView setUserInteractionEnabled: NO];' but 'self.view.userInteractionEnabled = true'; вы должны попробовать '[ImageView setUserInteractionEnabled: YES];' вместо – LoVo

+0

'[CATransaction setCompletionBlock:^{ NSLog (@« закончен »); self. ImageView.userInteractionEnabled = true; }]; ' – Mahesh

+0

его не работает – Sumi

ответ

0

В коде выше, вместо

self.view.userInteractionEnabled = true; 

использование этого

ImageView.userInteractionEnabled = YES; 
0

Вы можете попробовать это.

BOOL animationPause; 

ImageView = [[UIImageView alloc]initWithFrame:CGRectMake(250, 300, 100, 100)]; 

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(ImageViewClicked)]; 
    singleTap.numberOfTapsRequired = 1; 
    [ImageView addGestureRecognizer:singleTap]; 

    [self.view addSubview:ImageView]; 

    ImageView.image = [UIImage imageNamed:@"earth.jpeg"]; 

    [UIView animateWithDuration:1.0 animations:^{ 
     for (int i = 0; i<5; i++) { 
      ImageView.frame = CGRectMake(ImageView.frame.origin.x, ImageView.frame.origin.y+i+5, ImageView.frame.size.width, ImageView.frame.size.height) ; 
      if (i==4) { 
       ImageView.userInteractionEnabled = YES; 

      } 
if (animationPause == YES) 
       [UIView setAnimationDidStopSelector:@selector(animateStop)]; 
      else 
       [UIView setAnimationDidStopSelector:@selector(Resume)]; 
     } 

     } 
    }]; 

Там нет необходимости использовать CABasicAnimation На самом деле в вашем сценарии ваш взгляд изображение, имеющее некоторый кадр первоначально и вы добавили жест или что-то. Правильно, когда вы анималируете свое изображение, оно будет идти x или y на основе требований к анимации. кадр dyour imageView, имеющий все еще на начальном кадре. поэтому вызывается метод события click.

Но да, когда вы нажимаете на конкретный кадр, есть ли изображение или нет, вы заметите, что ваш метод будет вызван.

Вы управляете animationPause для приостановки и возобновления анимации. Надеюсь, он сработает. если у вас еще есть вопрос, позвольте мне сообщить

+0

На самом деле я хочу приостановить и возобновить анимацию .. возможно ли это в вашем коде? – Sumi

+0

вы можете сделать это человек. просто требуется некоторая логика, где вы хотите приостановить или возобновить. и да, вы также можете использовать этот код. Но если вы хотите использовать свой код, не беспокойтесь, просто измените рамку imageView, когда будете делать анимацию. –

+0

Надеюсь, вы получили его –

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