WebView 如何锁定水平滚动?

Posted

技术标签:

【中文标题】WebView 如何锁定水平滚动?【英文标题】:WebView how can I lock the horizontal scroll? 【发布时间】:2014-04-06 12:16:03 【问题描述】:

我只想让 WebView 全屏显示而不能水平滚动。我想要这个用于纵向和横向。

我对 ios 很陌生,我不知道它是如何工作的。我觉得故事板和 xib 与 android 的 xmls 相比非常混乱。当我打开src代码时,代码很多,我想不出来。

【问题讨论】:

禁用简单的水平滚动 【参考方案1】:

让我举例说明一种方法。考虑一下这个未经测试的伪代码。

@implementation MyViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation

   CGSize contentSize = self.webView.scrollView.contentSize;

   switch (orientation) 
      case UIInterfaceOrientationPortrait:
        contentSize.width = 320.0;
        self.webView.scrollView.contentSize = contentSize;
        return YES;

      case UIInterfaceOrientationLandscapeLeft:
      case UIInterfaceOrientationLandscapeRight:
        contentSize.height = 568.0;
        self.webView.scrollView.contentSize = contentSize;
        return YES;
   

   return NO;


@end

这里的想法是,当底层滚动视图的内容大小适合滚动should not be possible 的屏幕尺寸时。此代码对方向变化(当设备转动时)做出反应,并将边缘长度调整为它们各自的屏幕尺寸。

这样做的一个问题是设备必须至少转动一次,并且在两个方向转动手机后,contentSize 被锁定在320, 568。要解决这个问题,请考虑this SO。

【讨论】:

【参考方案2】:

您可以在界面生成器中为 Web 视图勾选“缩放页面以适应”复选框,这将确保 UIWebView 通过缩小其大小来将内容适合 iPhone/iPad 的屏幕,这实际上禁用了滚动的需要水平。

或者您可以执行以下操作:由于 UIWebView 包含在 UIScrollView 中,您可以使用此 SO 链接中描述的方法禁用此 UIScrollView 的滚动:How to disable horizontal scrolling of UIScrollView? 您可以通过调用 webview.scrollView 来访问 WebView 的滚动视图

【讨论】:

以上是关于WebView 如何锁定水平滚动?的主要内容,如果未能解决你的问题,请参考以下文章

React Native Android WebView 如何禁用水平滚动?

android webview没有水平滚动

在颤动的webview中禁用水平滚动

水平滚动与 WebView 结合时的滚动优先级

在android蜂窝webview/webkit中实现水平/垂直手指滑动滚动?

Chrome App webview 和触摸滚动传播