禁用滚动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];