UISwipeGestureRecognizer не работает? - PullRequest
1 голос
/ 30 декабря 2010

Я использую следующий код для поворота представления, когда происходит swipeEvent в iPad (с помощью UISwipeGestureRecognizer). Но когда я постоянно выполняю Swipping (2 или 3), метод не вызывается, я знаю причину, я использовал Durationв этом методе для CABasicAnimation.How я могу преодолеть эту проблему?Любая помощь, пожалуйста?

-(void)handleSwipeFromD:(UISwipeGestureRecognizer *)recognizer
{
 NSLog(@"down");
if (operationStart)
{

self.commonLayer = [self.layer presentationLayer];
self.layer.transform = commonLayer.transform;
[self.commonLayer removeAnimationForKey:@"rotationAnimate"];

self.commonLayer = self.layer;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.fromValue = [NSNumber numberWithFloat:0.0 * M_PI];
rotationAnimation.toValue = [NSNumber numberWithFloat:2.0 * M_PI];
//rotationAnimation.toValue = [NSNumber numberWithFloat: 2.5 * 3.15 ];
rotationAnimation.duration = 1.0;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1.0; 
//rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[self.commonLayer addAnimation:rotationAnimation forKey:@"rotationAnimate"];

  }  
}

1 Ответ

3 голосов
/ 30 декабря 2010

Следующее, помещенное в контроллер представления, а не в представление, работает многократно много раз.

- (void)viewDidLoad {
    [super viewDidLoad];
    UISwipeGestureRecognizer *sw = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFromD:)];
    [self.view addGestureRecognizer:sw];
    [sw release];
}


-(void)handleSwipeFromD:(UISwipeGestureRecognizer *)recognizer
{
    BOOL operationStart = YES;
    if (operationStart)
    {
        //self.view.la
    //  self.view.commonLayer = [self.layer presentationLayer];
    //  self.view.layer.transform = commonLayer.transform;
        [self.view.layer removeAnimationForKey:@"rotationAnimate"];

        CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
        rotationAnimation.fromValue = [NSNumber numberWithFloat:0.0 * M_PI];
        rotationAnimation.toValue = [NSNumber numberWithFloat:2.0 * M_PI];
        //rotationAnimation.toValue = [NSNumber numberWithFloat: 2.5 * 3.15 ];
        rotationAnimation.duration = 1.0;
        rotationAnimation.cumulative = YES;
        rotationAnimation.repeatCount = 1.0; 
        //rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
        [self.view.layer addAnimation:rotationAnimation forKey:@"rotationAnimate"];

    }  
}

Однако это не та иерархия слоев, которую вы используете, так как я удалил все ссылки на "commonLayer", и я действительно не понимаю из вашего кода какую роль он играет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...