Прикосновения теряются, когда я оживляю внутри прикосновений - PullRequest
1 голос
/ 06 марта 2011

Я хотел бы иметь 4 UIViews на экране и анимировать их цвет фона при касании и изменить его обратно, когда касания заканчиваются.

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    [UIView animateWithDuration:0.1
        animations:^{
            self.backgroundColor = altColor;
        }];
}

К сожалению, когда я выполняю эту анимацию в касанияхBegan - touchesEnded wonне срабатывает, если касание не закончилось после завершения анимации.Это означает, что touchesEnded теряется для касаний во время анимации.

Кроме того, быстрое нажатие UIView не приводит к множественным вызовам touchesBegan.Кажется, что новые прикосновения не принимаются до тех пор, пока анимация (порожденная в первом касании) не завершится.

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

Ответы [ 2 ]

2 голосов
/ 07 марта 2011

Похоже, мне нужно установить параметр для анимации блока

options:UIViewAnimationOptionAllowUserInteraction
0 голосов
/ 06 марта 2011

Оказывается, что этот старый тип анимации, похоже, не блокирует новые прикосновения Beg или touchesEnded:

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    [UIView beginAnimations:@"touchesBegan" context:nil];
    self.backgroundColor = altColor;
    [UIView commitAnimations];
}
...