UIWebView滚动

时间:2011-04-29 20:29:55

标签: iphone ios4 uiwebview

我在我的UIWebView中加载了一个HTML表单,所以我的UIWebView从视图的中间开始并扩展。我必须从滚动锁定此webView并将其放在scrollView的顶部以允许滚动。 webView不应在内部滚动。我试过这个

 [[webView.subviews objectAtIndex:0] setScrollEnabled:NO];

但是当我在其中加载一个单击textFields的表单时,我无法阻止webView在内部滚动,从而调出键盘。当我加载明文时,我能够获得所需的行为。我想停止webView自动滚动并使用webView下面的scrollView自己处理滚动。对你们大多数人来说,重新发明轮子可能没有意义,但要求就是这样。

有人可以建议做什么吗?

2 个答案:

答案 0 :(得分:1)

你可以尝试,

for (id subview in webView.subviews)

    if ([[subview class] isSubclassOfClass: [UIScrollView class]])

        if([subview respondsToSelector:@selector(setScrollingEnabled:)]) [subview performSelector:@selector(setScrollingEnabled:) withObject:NO];

或者你需要停止弹出webview,你可以试试这个。

for (id subview in webView.subviews)
        if ([[subview class] isSubclassOfClass: [UIScrollView class]])
            ((UIScrollView *)subview).bounces = NO;

希望这有帮助。

答案 1 :(得分:0)

尝试在加载webview后运行它(即使用正确的委托方法):

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.overflow='hidden'"]

如果您有权访问HTML,您还可以在body元素上设置正确的样式:

body { overflow: hidden; }

如果您执行其中任何一项操作,则需要确保使UIWebView足够高以显示所有内容。你可以通过运行它来获得高度(也是在webview加载后):

CGFloat height = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"]