【问题标题】:Disable UIWebView default scrolling behavior using objective-c使用objective-c禁用UIWebView默认滚动行为
【发布时间】:2011-04-17 13:24:17
【问题描述】:

我知道你可以使用 javascript 来做到这一点

<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}

有没有办法使用objective-c做同样的事情?

【问题讨论】:

    标签: iphone objective-c uiwebview


    【解决方案1】:

    试试这个...

    UIView * v = [[webView subviews] lastObject];
    [v setScrollEnabled:NO];
    [v bounces:NO];
    

    编辑:根据以下评论对原始答案添加检查

    UIView * v = [[webView subviews] lastObject];
    if([v isKindOfClass:[UIScrollView class] ]) {
        if ([v respondsToSelector:@selector(setScrollEnabled]) {
            [v setScrollEnabled:NO];
        }
        if ([v respondsToSelector:@selector(bounces)]) {
            [v bounces:NO];
        }
    }
    

    【讨论】:

    • 这是一个非常糟糕的主意。 UIWebView 的内部视图层次结构可以在任何操作系统更新时更改。至少在调用它们之前检查子视图是否响应这些方法。
    • 你能解释一下这是什么意思吗? lastObject 是 元素吗?
    • @Melina UIWebView 的最后一个子视图,@rpetrich 添加了检查,谢谢
    • 一些注意事项.. 检查具体方法有点矫枉过正,因为您已经知道它是一个 UIScrollView,所以您知道它会有哪些方法。另外,它是setBounces:NO,而不是bounces:NO
    • 没有 setBounces: , setScrollEnabled: 就可以了。
    【解决方案2】:

    使用 @aaron-saunders 和 @matt-rix 的答案,这是最适合我的方法:

    UIView *v = [[webView subviews] lastObject];
    if([v isKindOfClass:[UIScrollView class]])
        [v setScrollEnabled:NO];
    

    【讨论】:

      【解决方案3】:

      你也可以像这样访问滚动视图:

      webView.scrollView.scrollEnabled = false;
      webView.scrollView.bounces = false;
      

      【讨论】:

        【解决方案4】:

        无需使用复杂的方法。您可以直接访问 webview 的 Scrollview,如下所示。

        web_view.scrollView.scrollEnabled = NO;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-19
          • 1970-01-01
          • 1970-01-01
          • 2013-12-19
          • 2016-01-14
          • 2011-01-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多