【问题标题】:UIWebview in UIScrollview send vertical scroll event to scrollviewUIScrollview中的UIWebview向scrollview发送垂直滚动事件
【发布时间】:2013-07-29 10:03:57
【问题描述】:

所以我有一个仅用于水平滚动的 UIWebView,而它位于仅用于垂直滚动的 UIScrollView 中。我几乎可以做到这一点,但我有一个小问题。

UIWebiew 的滚动内容高度设置为 webviews 框架的高度,因此它不会垂直滚动,但即使是这种情况,它似乎仍然会消耗垂直滚动事件(有时),因为我可以看到侧滚动条显示,但它不会滚动(并且不会滚动包含 webview 的滚动视图)。

之所以需要这样,是因为有些元素需要随 webview 垂直滚动,而不是水平滚动(想想 safari 应用程序的地址栏如何随 webview 滚动)

有谁知道我将如何传递垂直滚动事件但保留 UIWebView 的水平滚动事件?

我查看了this answer,但它并不是我想要的

更新:

所以通常在我提出问题后,我会在另一个问题上找到合适的答案...(现在已经搜索了几个小时)this answer 应该为我解决问题,我试一试并报告

【问题讨论】:

    标签: ios objective-c uiwebview uiscrollview


    【解决方案1】:

    刚刚设置

    scrollView.alwaysBounceVertical = NO;
    scrollView.contentSize = CGSizeMake(
        scrollView.frame.size.width, scrollView.contentSize.height);
    scrollView.showsVerticalScrollIndicator = NO;
    

    编辑: 似乎不起作用。太惨了。。

    尝试实施

    - (BOOL)gestureRecognizer:(UIGestureRecognizer*)gst 
        shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer*)gst2 {
        return YES;
    }
    

    ..在你的视图中包含 scrollView 和 webView,甚至是 scrollView 本身(包含 webView)。

    【讨论】:

    • 嘿,是的,这就是我目前所拥有的,尽管它实际上无法滚动,但它仍然消耗垂直滚动事件,这是问题
    【解决方案2】:

    所以我发现我在问题中发布的解决方案大部分都有效,它完全符合我的需要,但由于某种原因,在网页加载后,它会将标题栏滚动到仅显示网页,这不是结束世界的,但它不漂亮。似乎事件在webViewDidFinishLoad: 之后触发,所以我不能将它重新定位到顶部。生病继续修补,也许我能找出它为什么这样做。

    【讨论】:

    • 我通过将它放在 UIView 动画中来处理跳出屏幕的标题,这样它就会在屏幕外制作动画而不是立即跳出(显然,当 webviews 自动将其内容偏移设置为 0,0页面加载完毕)
    • 我还有一个问题,在将子视图添加到 webview 的滚动视图后,一半的网页将无法点击,我通过在位置 0 插入子视图来修复它(因此它位于视图层次结构的后面) ,不知道为什么它有效,但确实有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多