【问题标题】:Get UIWebView to scroll and bounce horizontally but not vertically让 UIWebView 水平滚动和弹跳而不是垂直滚动
【发布时间】:2011-06-26 16:47:24
【问题描述】:

我有一个内容约为 1000 像素 x 200 像素的 iphone UIWebView。目前用手指滚动时,它会垂直弹跳,但不会水平弹跳。

我希望它做相反的事情:水平弹跳而不是垂直弹跳。

我需要在我的 html 中做一些技巧来实现这一点吗?例如,可以明确设置身体的宽度和高度?还是 UIWebView 的设置?我可以执行以下操作来完全禁用弹跳,有没有类似于按方向设置弹跳的方法?

[[[webView subviews] lastObject] setBounces:NO];

非常感谢您的帮助

【问题讨论】:

    标签: iphone html objective-c uiwebview


    【解决方案1】:

    在 iOS 5 中,您不需要访问子视图。 UIWebView 包含嵌套 UIScrollView 的 scrollView 属性:

    禁用反弹:

    webView.scrollView.bounces = NO;
    

    仅垂直反弹:

    webView.scrollView.alwaysBounceVertical = NO;
    webView.scrollView.alwaysBounceHorizontal = YES;
    

    【讨论】:

    • 在WKWebview中,webview.scrollView.bounces应该设置为YES。
    【解决方案2】:

    您可以尝试添加 CSS StyleSheet 并将容器 Div 设置为您的视图尺寸。并将 styleSheet 应用到您的 UIWebView。

    你可以那样做 -

    NSString *cssPath = [[NSBundle mainBundle] pathForResource:@"style" ofType:@"css"];
    
            //do base url for css
            NSString *path = [[NSBundle mainBundle] bundlePath];
            NSURL *baseURL = [NSURL fileURLWithPath:path];
    
            NSString *html =[NSString stringWithFormat:@"<!DOCTYPE html><html><head><link rel=\"stylesheet\"  href=\"%@\" type=\"text/css\" /></head><body><section></section><br><br></body></html>",,cssPath];
            [webView loadHTMLString:html baseURL:baseURL];  
    

    【讨论】:

      【解决方案3】:

      您可以循环浏览所有 UIWebViews 子视图(使用 for 循环)检查每个子视图以查看它是否是 UIscrollView(使用 isMemberOfClass:),然后更改 UIScrollView 中的属性以满足您的需要。

      for (UIView *subview in [myWebView subviews]) {
          if ([subview isMemberOfClass:[UIScrollView class]]) {
              [(UIScrollView *)subview setAlwaysBounceVertical:NO];
              [(UIScrollView *)subview setAlwaysBounceHorizontal:YES];
          }
      }
      

      【讨论】:

      • 谢谢,我看到了这些属性并试了一下,但没有帮助。
      • 代替isMemberOfClass试试isKindOfClass
      【解决方案4】:

      你总是可以这样做的:

      for (UIView *subview in [self.webView subviews]) {
          SEL sel = @selector(setAlwaysBounceHorizontal:);
          if( [subview respondsToSelector:sel] ){
              [subview performSelector:sel withObject:(id)YES];
          }
      }
      

      在你看来DidLoad

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-29
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多