【发布时间】:2010-10-25 08:30:55
【问题描述】:
我想隐藏滚动 UIWebView 时出现的本机滚动条/滚动条,但仍保持滚动功能不变。这可能吗?
提前致谢,
威廉
【问题讨论】:
-
适用于使用 iOS 5.0 及更高版本的任何人。考虑更新的答案。
我想隐藏滚动 UIWebView 时出现的本机滚动条/滚动条,但仍保持滚动功能不变。这可能吗?
提前致谢,
威廉
【问题讨论】:
看来这个问题需要更新答案:
您可以直接访问与 Web 视图关联的滚动视图。 (只读) 在 iOS 5.0 以上。 我认为开发人员不应该支持 iOS 5.0 之前的任何东西,除非在特殊情况下。
来自 Apple 开发者文档。
@property(nonatomic, readonly, retain) UIScrollView *scrollView
Discussion
Your application can access the scroll view if it wants to customize the scrolling behavior of the web view.
Availability
Available in iOS 5.0 and later.
Declared In
UIWebView.h
现在你可以直接写这样的东西:
webView.scrollView.showsHorizontalScrollIndicator = NO;
webView.scrollView.showsVerticalScrollIndicator = NO;
无需去webView的子视图。
【讨论】:
UIWebView 不直接从UIScrollView 继承,但您可以在UIWebView 子视图上使用UIScrollView 属性:
[(UIScrollView*)[webview.subviews objectAtIndex:0] setShowsHorizontalScrollIndicator:NO];
[(UIScrollView*)[webview.subviews objectAtIndex:0] setShowsVerticalScrollIndicator:NO];
不知道这是否可以接受,但它构建得很好,我认为它应该可以工作。如果这对您有用,请报告。
还可以考虑通过 bugreport.apple.com 向 Apple 提交功能请求,以将此属性添加到未来的 UIWebView 实施中。
【讨论】:
[webview.subviews objectAtIndex:0] 返回 _UIWebViewScrollView 的实例,该实例可以转换为 UIScrollView,但在 iOS 3.1.3 中它返回 UIScroller 的实例,该实例无法转换为 UIScrollView。
那样做:
for (id subview in self.myWebView.subviews) {
if ([[subview class] isSubclassOfClass: [UIScrollView class]]) {
((UIScrollView *)subview).bounces = NO;
((UIScrollView *)subview).showsVerticalScrollIndicator = NO;
((UIScrollView *)subview).showsHorizontalScrollIndicator = NO;
}
}
【讨论】:
在斯威夫特中:
webView.scrollView.showsHorizontalScrollIndicator = false
webView.scrollView.showsVerticalScrollIndicator = false
【讨论】:
如果有人正在寻找 swift 解决方案,那么下面是 swift 3.0
的代码yourWebView.scrollView.showsHorizontalScrollIndicator = false
yourWebView.scrollView.showsVerticalScrollIndicator = false
【讨论】:
这里似乎是一个答案的开始:
http://discussions.apple.com/thread.jspa?threadID=1781730
如果您禁用用户交互,这似乎会移除滚动条(如果您显示的网页不超过屏幕高度,这可能没问题)。
似乎还描述了一种 javascript hack,但我没有掌握它:/(但是,您需要有权访问您尝试显示的网页,这可能不是您的情况....)
【讨论】: