UINavigationController.hidesBarsOnSwipe=YES 导致 NSInternalInconsistencyException
Posted
技术标签:
【中文标题】UINavigationController.hidesBarsOnSwipe=YES 导致 NSInternalInconsistencyException【英文标题】:UINavigationController.hidesBarsOnSwipe=YES leads to NSInternalInconsistencyException 【发布时间】:2016-10-10 11:58:24 【问题描述】:我在 UINavigationController 中嵌入了一个 UITableViewController。一切正常,直到我在 viewWillAppear 中将 UINavigationController 的属性 hidesBarsOnSwipe 设置为 YES。如果用户要稍微紧张地上下滚动,应用程序会崩溃并显示以下消息:
2016-10-10 13:47:27.973 xxx[4246:1716033] *** Assertion failure in -[_UIAnimationCoordinator finishInteractiveAnimation], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3512.60.12/_UIAnimationCoordinator.m:154 2016-10-10 13:47:27.974 xxx[4246:1716033] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Trying to finish an interactive transition that was not started interactively'
以下代码似乎是一种解决方法,但是,我宁愿弄清楚,如果其他人有类似的问题并且可能找到了更好的解决方案。提前谢谢!
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
if(scrollView.contentOffset.y <= 10)
//scrollup
scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
[self.navigationController setNavigationBarHidden: NO animated:YES];
else if(scrollView.contentOffset.y >= 10)
//scrolldown
[self.navigationController setNavigationBarHidden: YES animated:YES];
顺便说一句:我可以在 ios 9.3.5 和 10.0.2 中使用 XCode 7.3 在模拟器和设备上重现此行为
【问题讨论】:
你找到解决方案了吗? 不,解决方法仍然是生产代码:-( 【参考方案1】:对于和我一样有同样问题并访问此页面的每个人。
我修复了仅打开属性检查器导航控制器“隐藏栏”->“滑动时”(取消选中)。
希望对某人有所帮助。
(xcode 11.5,操作系统 13.5.1)
【讨论】:
以上是关于UINavigationController.hidesBarsOnSwipe=YES 导致 NSInternalInconsistencyException的主要内容,如果未能解决你的问题,请参考以下文章