iOS - установить МАКСИМАЛЬНЫЙ TouchCount - PullRequest
0 голосов
/ 16 февраля 2012

Я беру UITapGestureRecognizer, чтобы перевернуть страницу комиксов.Когда я беру кран, я отправляю:

    [comicScrollView setContentOffset:CGPointMake(nextPageCGPoint) animated:YES];

- другими словами, при событии касания я анимирую смещение содержимого представления прокрутки, чтобы показать следующую страницу в представлении прокрутки.

Проблема в том, что я не хочу, чтобы другой жест касания воздействовал на contentOffset, если анимация не завершена.Проблема в том, что на практике я обнаружил, что это очень сложно - я попытался установить логическое значение isAnimating в YES, прежде чем устанавливать смещение содержимого, а затем установить его в NO с обратным вызовом;Я попытался установить анимацию: завершение: - но каждый раз, когда происходит касание, увеличивается значение TapCount.

следующее:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    NSLog(@"%d", [touch tapCount]);
}

постоянно увеличивает значение tapCount так часто, как я нажимаю на негои если я добавлю это в этот метод:

if ([touch tapCount] > 1) { [gestureRecognizer setEnabled:NO]; }

, он не отключит распознаватель жестов до тех пор, пока не закончится увеличение tapCount, а затем не обнулится.

Пожалуйста, помогите!Я не могу понять, как остановить увеличение tapCount после 1.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

Я не хотел использовать метод [UIView beginAnimations:], поэтому снова экспериментировал с новым способом с использованием блоков.Я пробовал это раньше и не знаю, что я сделал по-другому на этот раз, но результат был благоприятным.

Я обнаружил, что когда я использовал этот метод, чтобы установить contentOffset scrollview, хотя мой tapCount все ещеувеличиваясь, пока я продолжаю постукивать, как сумасшедший, страницы теперь анимируются с желаемым поведением, а не беспорядочно.Как будто это не позволяет мне «включить другую анимацию».Какое поведение я хочу.

-(void)singleTap:(UITapGestureRecognizer*)tapRecognizer {

    CGPoint tapLocation = [tapRecognizer locationInView:self.view];

    //a tap on the right side turns to the next page:
    if (tapLocation.x > self.view.frame.size.width/2) {
        [UIView animateWithDuration:.3 animations:^{
            [comicScrollView setContentOffset:nextPagePoint];
        }completion:^(BOOL finished){
            NSLog(@"finished");
        }];
    }
}
0 голосов
/ 16 февраля 2012
[UIView beginAnimations:@"AnimateIn" context:nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration: 0.7f];

//Add this
[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(loadingViewDisappear:finished:context:)];
loadingView.frame = CGRectMake(rect.origin.x, rect.origin.y - 80, rect.size.width, rect.size.height);
[UIView commitAnimations];



- (void)loadingViewDisappear:(NSString *)animationID finished:(NSNumber *) finished context:(void *) context {
    NSLog( (finished ? @"YES!" : @"NO!" ) );
    if ([animationID isEqualToString:@"AnimateIn"] && finished) {
        //do something here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...