Есть ли способ отменить анимированный UITableView/UIScrollView setContentOffset:animated:?

Мое приложение отказывает когда мой UITableView выпущен при анимации. Приложение функционирует без проблемы, пока анимация завершается. Ниже результат касания на UIButton который звонит [tableView setContentOffset:offset animated:YES]; и затем молния быстрое касание на backBarButtonItem который появляется UITableViewController:

#0  0x31ec3ebc in objc_msgSend
#1  0x33690248 in -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded]
#2  0x30defa14 in -[NSObject performSelector:withObject:]
#3  0x33690098 in -[UIAnimator stopAnimation:]
#4  0x3368fb7c in -[UIAnimator(Static) _advance:]
...

Я никогда не видел катастрофического отказа на _scrollViewAnimationEnded и по-видимому ни у одного нет Google. Я попытался звонить [tableView setContentOffset:offset animated:NO]; от UITableViewController - (void)viewWillDisappear:(BOOL)animated метод, но это не решило проблему.

Любые идеи для остановки a UITableView или UIScrollView посреди анимации?

13
задан Metric Scantlings 14 December 2009 в 02:20
поделиться

2 ответа

Похоже, это проблема делегата. Есть ли у вас делегат для таблицы, и если да, то освобождается ли он, когда таблица отключена? Попробуйте обнулить делегата tableView перед его освобождением.

[TableView сохраняется CoreAnimation во время анимации, так что, вероятно, проблема не в этом.]

28
ответ дан 1 December 2019 в 20:43
поделиться

Я думаю, проблема в том, что вы выпускаете массив источника данных, прежде чем вы освободите tableView. попробуйте проверить это тоже в dealloc

1
ответ дан 1 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: