在缩放后由html脚本越野车填充的web视图上的对角线滑动

时间:2016-12-09 07:35:44

标签: ios swift uiscrollview uiwebview

我有一个Web视图,显示比屏幕大得多的表。当我尝试在对焦后对角滚动 - 无论是向内还是向外,它通常只向单个方向滚动而不是对角滚动。这种行为是由于网页视图的滚动视图还是我的代码中出错?

这就是我填充网络视图的方式:

    webViewContent.scrollView.bounces = false
    webViewContent.scrollView.bouncesZoom = false
    webViewContent.scrollView.delegate = self
    webViewContent.scalesPageToFit = true

    var htmlString = "<html><head>... ... a really long string that creates a table"
    webViewContent.loadHTMLString(htmlString, baseURL: nil)

请告诉我htmlString是否会影响,我没有包含它,因为它真的很长。

我还尝试将视图与名为webViewTitle的标题行同步,我使用类似的代码填充,但只有一行。同步代码如下:

func scrollViewDidZoom(_ scrollView: UIScrollView) {
    if(scrollView != webViewTitle.scrollView){
        var zoomPadding:CGFloat = 0.0
        if((currentZoomScale*webViewContent.scrollView.zoomScale) < 1){
            zoomPadding = 0.5*(-acos(currentZoomScale*webViewContent.scrollView.zoomScale)*180.0/CGFloat.pi)
        }else{
            zoomPadding = 0.5*acos(2-(currentZoomScale*webViewContent.scrollView.zoomScale))*180.0/CGFloat.pi
        }
        webViewTitle.scrollView.zoom(to: CGRect(x: webViewContent.scrollView.contentOffset.x,
                                                y: (355*currentZoomScale*webViewContent.scrollView.zoomScale) + zoomPadding,
                                                width: webViewTitle.scrollView.bounds.width/currentZoomScale/webViewContent.scrollView.zoomScale,
                                                height: webViewTitle.scrollView.bounds.height/currentZoomScale/webViewContent.scrollView.zoomScale),
                                     animated: false)
    }
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    var zoomPadding:CGFloat = 0.0
    if((currentZoomScale*webViewContent.scrollView.zoomScale) < 1){
        zoomPadding = 0.5*(-acos(currentZoomScale*webViewContent.scrollView.zoomScale)*180.0/CGFloat.pi)
    }else{
        zoomPadding = 0.5*acos(2-(currentZoomScale*webViewContent.scrollView.zoomScale))*180.0/CGFloat.pi
    }
    if(scrollView == webViewTitle.scrollView){
        webViewTitle.scrollView.contentOffset.y = (355*currentZoomScale*webViewContent.scrollView.zoomScale) + zoomPadding
        webViewContent.scrollView.contentOffset.x = webViewTitle.scrollView.contentOffset.x
    }else{
        webViewTitle.scrollView.contentOffset.y = (355*currentZoomScale*webViewContent.scrollView.zoomScale) + zoomPadding
        webViewTitle.scrollView.contentOffset.x = webViewContent.scrollView.contentOffset.x
    }
}

这些中的任何一个都会导致对角线滚动变成马车吗?

1 个答案:

答案 0 :(得分:-1)

  

这些中的任何一个都会导致对角线滚动变成马车吗?

从提供的代码中,您正在为UIScrollViewDelegate实施UIWebView,但在所示的两种实现中,您都没有调用super。这意味着scrollView不会具有标准行为,而是严格使用您的代码scrollViewDidScrollscrollViewDidZoom行为。

虽然这个question并不一定非常清楚地说明发生了什么,但我认为这与你所面临的问题相同。

总结:至少,为super的每个代理实现调用UIScrollViewDelegate,或者如果您不需要任何自定义滚动行为,则完全删除delegate