Я пытаюсь реализовать анимацию, которая происходит, когда пользователь удаляет одну из моих ячеек таблицы. В принципе, анимация - это всего лишь небольшая метка с текстом, похожим на «+5» или «+1», который появляется, а затем движется вверх, в то время как исчезает (в основном, как точки появляются в видеоиграх, когда пользователь их оценивает).Не удается взаимодействовать с UITableView во время анимации
В 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];
Тост появляется красиво и выглядит великолепно. Проблема в том, что пока анимация не завершится, tableview перестает получать события касания. Это означает, что в течение одной секунды после нажатия ячейки в представлении таблицы вы не можете использовать любые другие ячейки в представлении таблицы.
Есть ли способ остановить это и позволить пользователю продолжать взаимодействовать с табличным представлением, как если бы анимации не происходили вообще?
Заранее благодарим за помощь.
Блестящий! Так оно и было. Самое приятное в том, что делать это блочным способом - это блокировать автоматическое сохранение представлений извне, поэтому вам не нужно беспокоиться о том, чтобы вручную убедиться, что временные представления не будут уничтожены до того, как вызывается обработчик завершения. Также дает вам сомнительное удовлетворение, сделав это официально рекомендованным способом :) – glenc
Пять лет спустя, и вы все равно сохранили мой день. Спасибо! –