如果没有在 Swift 中加载 URL,如何使 WKWebView 不可滚动?

Posted

技术标签:

【中文标题】如果没有在 Swift 中加载 URL,如何使 WKWebView 不可滚动?【英文标题】:How to make WKWebView not scrollable without a URL loaded in Swift? 【发布时间】:2015-05-03 19:37:19 【问题描述】:

当我启动浏览器应用程序时,它会显示地址栏和 WKWebView,但没有加载 URL。 由于没有 URL,视图不应该是可滚动的,但它是。

【问题讨论】:

【参考方案1】:

您可以在 viewdidload 中执行以下操作:

webView.loadRequest(NSURLRequest(URL: NSURL(string: "about:blank")!))

编辑

@interface ViewController () <WKNavigationDelegate>

...

- (void)viewDidLoad 
    [super viewDidLoad];

    WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
    webView.navigationDelegate = self;
    webView.scrollView.scrollEnabled = NO;
    [self.view addSubview:webView];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.de"]]];
    );


- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation 
    NSLog(@"%s", __PRETTY_FUNCTION__);
    webView.scrollView.scrollEnabled = (webView.URL != nil);

【讨论】:

嗨 Andre,感谢您的回答 :) 但是,我不能使用此解决方案,因为它只会在每次加载视图时加载 about:blank(即使我切换到设置或书签视图)这对我的应用程序来说是有问题的。我认为可以提供一个不错的解决方案,但不知道是否有一个功能可以在没有加载 URL 时禁用滚动。你知道怎么做这样的事情吗?谢谢:) 我尝试了您的新编辑,并在 viewDidLoad 上使用 webView.scrollView.scrollEnabled = (webView.URL != nil); 成功了 :) 非常感谢安德烈! :)

以上是关于如果没有在 Swift 中加载 URL,如何使 WKWebView 不可滚动?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 WKWebVIew 或 JSC 在 iOS 应用程序中加载 WebAssembly

如何在 Swift 中加载初始视图控制器?

如何在 Swift 3 中加载带有 HTML 的 CSS 文件?

如果在 JSON 对象中加载空图像 URL,则应用程序崩溃

如何在 Swift 中加载远程 JSON 文件?

如何在 Swift 中的 UIWebView 中加载本地 PDF