Я хочу отметить, что мой UINavigationController
анимирует (push/pop) или нет.
У меня есть переменная BOOL (_isAnimating), и приведенный ниже код выглядит следующим образом:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
_isAnimating = YES;
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
_isAnimating = NO;
}
Но он работает неправильно в iOS7 с жестом салфетки. Предположим, что моя навигация: root- > view A → view B. Я сейчас на B.
-
В начале салфетки (возврат из B в A) вызывается функция "
navigationController:willShowViewController:animated:(BOOL)animated
", затем_isAnimating = YES
. -
В нормальном случае завершается салфетка (вернитесь к A), вызывается функция "
navigationController:didShowViewController:animated:(BOOL)animated
", затем_isAnimating = NO
. Этот случай в порядке, но: -
Если пользователь может просто проделать половину (половина перехода к A), то не хотите прокручивать предыдущее представление (вид A), он снова переходит к текущему виду (снова оставаться B). Тогда функция "
navigationController:didShowViewController:animated:(BOOL)animated
" не вызывается, моя переменная имеет неправильное значение(_isAnimating=YES)
.
У меня нет шансов обновить мою переменную в этом ненормальном случае. Есть ли способ обновить состояние навигации? Спасибо!