加载WKWebView之后,带有大型导航栏滚动条的My ViewController自动向上滚动

时间:2019-10-16 06:27:22

标签: ios navigationbar ios13

在我的应用中,我正在使用WebKit WebView在视图控制器中加载页面,并且Viewcontroller具有大型导航控制器。在查看时,DidLoad大导航栏显示良好。

此时,当我开始使用本地HTML文件加载WebView时。 加载此WebView之后,无需任何用户交互,ViewController会自动向上滚动,以使导航栏缩小为实际的小尺寸窗体。 enter image description here

5 个答案:

答案 0 :(得分:1)

是的,如果要一直设置大型导航栏,则这是导航栏的默认行为,那么必须使用自定义导航栏。创建自己的导航栏。谢谢

答案 1 :(得分:1)

使用viewLayoutMarginsDidChange()会对您有所帮助。使用此功能,您可以在每个视图中检查视图大小是否已更改,如果可以,则可以在此处设置原始导航标题的大小,所以不用我添加的内容,在下面解析您的导航栏框架值。

     var didChange = false
    override func viewLayoutMarginsDidChange() {
    if didChange {
        print("Height : - \ 
  (self.navigationController?.navigationBar.frame.size.height)")
    // set NavigationBar Height here    
       self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: 
   UIScreen.main.bounds.width, height: 96.0)
        didChange.toggle() 
        }
     }

答案 2 :(得分:1)

尝试获取wkWebView.srollViewscrollViewDidScroll的滚动事件,看看是否有滚动事件。

或者,在加载WebView时禁用WKWebView.scrollView.scrollEnabled,并在加载完成后将其启用

答案 3 :(得分:1)

contentInsetAdjustmentBehavior方法中将ScrollView的{​​{1}}的{​​{1}}属性更改为WebView

.never

答案 4 :(得分:0)

您可以尝试:

webView.scrollView.contentInsetAdjustmentBehaviour = .never