В моем приложении у меня есть табличное представление.Когда пользователь нажимает кнопку, UIView перекрывает часть этого табличного представления.По сути, это частичный модал.Это табличное представление намеренно все еще прокручивается, пока этот модал активен.Чтобы позволить пользователю прокрутить до нижней части табличного представления, я изменяю значения contentInset и scrollIndicatorInsets, чтобы приспособиться к меньшей области выше модального.Когда модал убран, я сбрасываю эти значения вставки.
Проблема в том, что когда пользователь прокручивает до нижней части вновь настроенной вставки и затем отклоняет модал, представление таблицы резко переходит на новоеположение прокрутки, потому что вставка изменяется мгновенно.Я хотел бы оживить его, чтобы произошел переход, но методы beginAnimation / commitAnimations по какой-то причине не влияют на него.
Редактировать: Подробнее.Я нашел конфликт.Представляя модальные, я также скрываю панель навигации.Панель навигации изначально анимирует табличное представление вверх и вниз, поскольку оно показывает и скрывает.Когда я прекращаю анимировать панель навигации, вставка анимации работает нормально.Кто-нибудь знает, что я могу сделать, чтобы обойти этот конфликт?Нужно ли ждать окончания анимации панели навигации, прежде чем настраивать вставку?Если да, то как мне это зацепить?
Любая помощь очень ценится!
Соответствующий код от контроллера табличного представления находится здесь:
- (void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(modalOpened) name:@"ModalStartedOpening" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(modalDismissed) name:@"ModalStartedClosing" object:nil];
[super viewDidLoad];
}
- (void)modalOpened {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self];
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 201, 0);
self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 201, 0);
[UIView commitAnimations];
}
- (void)modalDismissed {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self];
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 0, 0);
[UIView commitAnimations];
}