Я пытаюсь реализовать анимацию, которая происходит, когда пользователь касается одной из моих ячеек таблицы. По сути, анимация - это просто небольшая метка с текстом, подобным «+5» или «+1», который появляется, а затем перемещается вверх во время исчезновения (в основном, как очки появляются в видеоиграх, когда пользователь их забивает).
В реализации tableView:didSelectRowAtIndexPath:
моего контроллера я делаю следующее (перефразировано для простоты здесь):
CGRect toastFrame = /* figure out the frame from the cell frame here */;
UILabel *toast = [[UILabel alloc] initWithFrame:toastFrame];
toast.text = [NSString stringWithFormat:@"+%d", 5];
toast.backgroundColor = [UIColor clearColor];
toast.userInteractionEnabled = NO; // hoped this would work but it doesn't
[tableView addSubview:toast];
[UIView
animateWithDuration:1.0
animations:^
{
toast.alpha = 0.0;
toast.transform = CGAffineTransformMakeTranslation( 0.0, -44.0 );
}
completion:^ (BOOL finished)
{
[toast removeFromSuperview];
}];
[toast release];
Тост выглядит красиво и выглядит великолепно. Проблема в том, что до завершения анимации табличное представление перестает получать сенсорные события. Это означает, что в течение одной секунды после нажатия на ячейку в табличном представлении вы не можете нажимать никакие другие ячейки в табличном представлении.
Есть ли способ предотвратить это и позволить пользователю продолжать взаимодействовать с табличным представлением, как если бы анимация вообще не происходила?
Заранее спасибо за любую помощь в этом.