繁体   English   中英

UIWebView 滚动

[英]UIWebView Scrolling

我在我的 UIWebView 中加载了一个 HTML 表单,碰巧我的 UIWebView 从视图的中间开始并延伸。 我必须从滚动锁定这个 webView 并将它放在滚动视图的顶部以允许滚动。 webView 不应在内部滚动。 我试过这个

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

但是当我在其中加载一个点击了文本字段的表单时,我无法阻止 webView 在内部滚动。 当我加载纯文本时,我能够获得所需的行为。 我想阻止 webView 自动滚动并使用位于 webView 下方的 scrollView 自己处理滚动。 对于大多数人来说,我重新发明轮子可能没有意义,但要求就是这样。

有人可以建议该怎么做吗?

你可以试试,

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;

希望这可以帮助。

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

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

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

body { overflow: hidden; }

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM