UIScrollView不支持实现

UIScrollView不支持实现

本文介绍了LargeTitles UIScrollView不支持实现_scrollViewWillEndDraggingWithVelocity:targetContentOffset的多个观察者的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在我的应用中使用以下代码实现了大标题:

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的多个观察者的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-01 00:09