获取UIWebView可以水平滚动和弹跳,但不能垂直滚动

时间:2011-02-14 03:56:23

标签: iphone html objective-c uiwebview

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

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

我需要在html中做些诡计来实现这个目标吗?例如,明确地设置身体的宽度和高度可能吗?或者它是UIWebView的设置?我可以执行以下操作来完全禁用弹跳,是否有类似于在每个方向上设置弹跳的内容?

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

非常感谢您的帮助

4 个答案:

答案 0 :(得分:5)

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

禁用退回:

webView.scrollView.bounces = NO;

只能垂直弹跳:

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

答案 1 :(得分:0)

您可以尝试添加CSS样式表,并使用视图的维度设置容器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];  

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

你总是可以这样做:

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