【问题标题】:WKWebView Reader ViewWKWebView 阅读器视图
【发布时间】:2014-10-05 02:41:51
【问题描述】:

我正在从UIWebView 切换到WKWebView,并且不知道如何设置我的配置以使用Reader

有没有人可以帮助我?

viewDidLoad:

WKWebViewConfiguration *config = [NSClassFromString(@"WKWebViewConfiguration") alloc] init];
    // Configuration of Reader goes here?
    wkWebView = [[wkWebViewClass alloc] initWithFrame:frame configuration:config];
    [self.view addSubview:wkWebView];
}

【问题讨论】:

    标签: ios objective-c uiwebview ios8 wkwebview


    【解决方案1】:

    您不能为 WKWebView(或 UIWebView)启用“阅读器”模式。

    编辑:但是,您可以使用 SFSafariViewController 执行此操作,如在其他解决方案中所见。

    我突然想到,可以修改网站的 HTML 代码,使其看起来更像 Reader。似乎有些服务已经这样做了,比如 Readability:

    只需将此 URL 加载到您的 WKWebView 中: http://www.readability.com/m?url=YOUR_URL_HERE

    这应该可以帮助您实现与 Reader 类似的功能。

    【讨论】:

    • 很高兴知道没有办法做到这一点。之前检查过可读性的东西。只是假设 Apple 在 WKWebKit 中提供了访问其阅读器模式的能力。
    • Readability.com 不再可用
    【解决方案2】:

    只需改进@dzensik 的答案,因为“init(url:entersReaderIfAvailable:)”在 iOS 11.0 中已被弃用。

    import UIKit
    import SafariServices
    
        class ViewController: UIViewController {
    
            override func viewDidAppear(_ animated: Bool) {
                super.viewDidAppear(true)
    
                let urlString = "http://google.com"
                let url = URL(string: urlString)
                let configuration = SFSafariViewController.Configuration()
                configuration.entersReaderIfAvailable = true
    
                let safariVC = SFSafariViewController(url: url!, configuration: configuration)
                present(safariVC, animated: true, completion: nil)
            }
        }
    

    【讨论】:

      【解决方案3】:

      @dfmuir 是对的,UIWebView 或 WKWebView 不提供阅读器模式。然而,正如 Baig 所说,您可以使用 SFSafariViewController 来实现这一点。在这里,我们使用一个简单且有效的 Swift 代码来执行此操作:

      import UIKit
      import SafariServices
      
      class ViewController: UIViewController {
      
          override func viewDidAppear(_ animated: Bool) {
              super.viewDidAppear(true)
      
              let urlString = "http://google.com"
              let url = URL(string: urlString)
              let safariVC = SFSafariViewController(url: url!, entersReaderIfAvailable: true)
              present(safariVC, animated: true, completion: nil)
          }
      }
      

      【讨论】:

      • 完美!正是我需要在 Swift 3 的 url 上默认进入阅读器视图。
      【解决方案4】:

      第一件事:导入 SafariServices:

      #import <SafariServices/SafariServices.h>
      

      之后我们实例化 SFSafariViewController 并将其添加为子视图。我们有两种选择:

      • 仅使用基本 URL 创建
      • 使用基本 URL 创建并进入“阅读模式”以防万一
      NSString *sURL = @"http://google.com";
      
      NSURL *URL = [NSURL URLWithString:sURL];
      
      SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL]; // 1.
      
      SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL entersReaderIfAvailable:YES]; // 2.
      
      [self presentViewController:safari animated:YES completion:nil];
      

      【讨论】:

        【解决方案5】:

        您可以使用 JavaScript 来启用阅读器视图。

        只需使用此代码...

        webView.evaluateJavaScript("document.body.innerText”)
        

        此代码正在获取网页中的文本

        这是阅读器视图的完整代码

        @IBAction func readerViewtoogle(_ sender: Any) {
                webView.evaluateJavaScript("document.body.innerText") { result, error in
                    print(result!)
                    self.webView.loadHTMLString("""
                        <!DOCTYPE html>
                        <html>
                        <style>
        h1{
        font-weight: normal;
        align="justify";
        color: grey;
        line-height: 1.6;
        }
                        </style>
                        <head>
                        <title>Error</title>
                        </head>
                        <body style="background-color:black">
                        <h1 style="text-align:center;">\(String(describing: self.webView.title))</h1>
                        <br>
                        <hr>
                        <h1 style="text-align:justify;">\(String(describing: result))</h1>
                        <br>
                        <br>
                        <br>
                        </body>
                        </html>
        """, baseURL: self.webView.url)
                }
            }
        

        使用 Xcode 12 测试版完成

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-30
          • 2015-08-20
          • 2021-08-22
          • 1970-01-01
          • 2011-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多