禁用滚动UIWebView允许?
我必须在文章下面展示一个带有UITableView
的Web文章。
我发现的唯一select是在tableView标题的UIWebView
中显示文章。
为了做到这一点,我必须得到的webView内容的高度,我必须禁用滚动的webView。
我发现两个解决scheme禁用滚动:
for (id subview in webView.subviews) if ([[subview class] isSubclassOfClass: [UIScrollView class]]) ((UIScrollView *)subview).scrollEnabled=NO;
或在JavaScript中:
<script type="text/javascript"> touchMove = function(event) { event.preventDefault(); }
我听说第一个解决scheme是苹果禁止的,但是我没有任何证据。 我的申请将被拒绝使用这种解决scheme? 如果是这样,我可以使用第二个解决scheme而不被拒绝?
从iOS5开始,我们可以直接访问UIWebView的滚动视图。
您可以禁用滚动和反弹像这样:
webView.scrollView.scrollEnabled = NO; webView.scrollView.bounces = NO;
由于这个问题仍然适用,有一个新的方法来做到这一点! (iOS 7.0+,也许iOS 6也没有确认)
webView.scrollView.scrollEnabled = NO;
保重 :)
您可以简单地将Web视图用户交互属性设置为no
webView.userInteractionEnabled = NO;
它非常简单,工作正常,谢谢:)
对于所有ios版本,您可以使用此代码而不是setScrollEnabled:
for (UIView *view in webview.subviews) { if ([view isKindOfClass:[UIScrollView class]]) { UIScrollView *scrollView = (UIScrollView *)view; scrollView.scrollEnabled = NO; } }
使用这个<body ontouchmove="event.preventDefault()">
我认为是Javascript
<script type="text/javascript"> touchMove = function(event) { event.preventDefault(); }
是最好的解决scheme。
确实 :
你的第一个问题,或者
[[[WebView subviews] lastObject] setScrollingEnabled:NO];
一个(相同的东西)可能会被拒绝,因为没有logging,或让你的应用程序在进一步的ios更新崩溃。
而且
[[myWebView scrollView] setBounces:NO];
方法不适用于iOS <5。
[[[WebView subviews] lastObject] setScrollingEnabled:NO];
为我sorting
我不认为第一个选项是被苹果禁止的。
你可以试试
[[[Webview subviews] lastObject] setScrollingEnabled:NO];
如果你不想在UIWebView中使用任何链接,你也可以这样做
[myWebView setUserInteractionEnabled:NO];
第一个被苹果拒绝。 今天早上发生在我身上。
[[myWebView scrollView] setBounces:NO];
用它 :
[[webView scrollView] setBounces:NO]; [[webView scrollView] setScrollingEnabled:NO];
尝试这个,
[(UIScrollView *)[[webView subviews] lastObject] setScrollEnabled:NO];
我在UIScrollView
放置了一些UIWebView
,除非我停用webviews上的用户交互(即使使用[[webview scrollview] setScrollEnabled:NO]
),我也不会滚动。 所以我把UIWebView
放在一个UIView
里面,这对我UIView
,但是在我的HTML里面的UIWebView
中的交互链接或者div并没有工作。
我唯一能做的就是把UIWebView
放在UIScrollView
这样HTML交互就可以工作,但是UIScrolling
不会。
然后,我为webviews创build了一个自定义委托来监听从webview中包含的HTML调用的window.open("http:/customEvent")
。 我还添加了一个JavaScript刷卡检测,将启动我的自定义事件。
当webview委托收到这个,我通知一个控制器,然后dynamic滚动我的UIScrollView
。 显然,我必须build立一个逻辑来监视和滚动到下一页或上一页。 不是最漂亮的解决scheme,但它为我工作。
SWIFT 3版本
webView.scrollView.bounces = false webView.scrollView.isScrollEnabled = false
试试你的HTML( <HEAD>
标签)
<script> document.ontouchmove = function(event) { event.preventDefault(); } </script>
这将禁用您的网页上的滚动。
(在任何网页上工作,不只是UIWebView)
我需要禁用滚动,因为解散一个自定义键盘搞砸了与webView滚动。 没有别的工作,我诉诸这样的事情:
-(void)viewDidLoad{ [super viewDidLoad]; [self.webView.scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; self.webView.scrollView.showsVerticalScrollIndicator = NO; } -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if (!CGPointEqualToPoint(self.webView.scrollView.contentOffset, CGPointZero)){ self.contentOffset = CGPointZero; } }
是UIScrollview上的UIWebview和UITableView,并设置webview的高度(并添加到Scrollview的总ContentSize)像你想要的?
[[[WebView subviews] lastObject] setScrollingEnabled:NO];