问题描述
我已经在我的应用中使用以下代码实现了大标题:
I have implemented large titles in my app with the following code:
if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .always
} else {
// Fallback on earlier versions
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y <= 0 {
if #available(iOS 11.0, *) {
self.navigationItem.largeTitleDisplayMode = .always
} else {
// Fallback on earlier versions
}
} else {
if #available(iOS 11.0, *) {
self.navigationItem.largeTitleDisplayMode = .never
} else {
// Fallback on earlier versions
}
}
self.navigationController?.navigationBar.setNeedsLayout()
self.view.setNeedsLayout()
UIView.animate(withDuration: 0.01, animations: {
self.navigationController?.navigationBar.layoutIfNeeded()
self.view.layoutIfNeeded()
})
}
我能够在选项卡上的视图之间成功切换,但是当我将视图推到选项卡控制器的顶部,然后使用以下代码将其弹出时:
I am able to successfully toggle between views on a tabbar but when I push a view ontop of the tabbar controller and then pop it off using this code:
_ = self.navigationController?.popViewController(animated: true)
当我再次在选项卡上的视图之间切换时,出现此崩溃:由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'错误:UIScrollView不支持实现_scrollViewWillEndDraggingWithVelocity:targetContentOffset:的多个观察者:'
I get this crash when I toggle between views on the tabbar again:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'ERROR: UIScrollView does not support multiple observers implementing _scrollViewWillEndDraggingWithVelocity:targetContentOffset:'
推荐答案
我找到了解决方案.您必须将第一个导航控制器设置为不使用大标题.
I found the solution. You have to set the first navigation controller to not use large titles.
问题在于,现在UIScrollView仅具有一个实现_scrollViewWillEndDraggingWithVelocity的观察者(navigationController).
The point is that now UIScrollView has only one observer (navigationController) implementing _scrollViewWillEndDraggingWithVelocity.
if (@available(iOS 11.0, *)) {
self.navigationController.navigationBar.prefersLargeTitles = FALSE;
self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
}
这篇关于LargeTitles UIScrollView不支持实现_scrollViewWillEndDraggingWithVelocity:targetContentOffset的多个观察者的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!