我在我的UIWebView中加载了一个HTML表单,所以我的UIWebView从视图的中间开始并扩展。我必须从滚动锁定此webView并将其放在scrollView的顶部以允许滚动。 webView不应在内部滚动。我试过这个
[[webView.subviews objectAtIndex:0] setScrollEnabled:NO];
但是当我在其中加载一个单击textFields的表单时,我无法阻止webView在内部滚动,从而调出键盘。当我加载明文时,我能够获得所需的行为。我想停止webView自动滚动并使用webView下面的scrollView自己处理滚动。对你们大多数人来说,重新发明轮子可能没有意义,但要求就是这样。
有人可以建议做什么吗?
答案 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"]