Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios WKWebView阅读器视图_Ios_Objective C_Uiwebview_Ios8_Wkwebview - Fatal编程技术网

Ios WKWebView阅读器视图

Ios WKWebView阅读器视图,ios,objective-c,uiwebview,ios8,wkwebview,Ios,Objective C,Uiwebview,Ios8,Wkwebview,我正在从UIWebView切换到WKWebView,而无法确定如何设置使用阅读器的配置 有人能帮我吗 viewDidLoad: WKWebViewConfiguration *config = [NSClassFromString(@"WKWebViewConfiguration") alloc] init]; // Configuration of Reader goes here? wkWebView = [[wkWebViewClass alloc] initWithFr

我正在从
UIWebView
切换到
WKWebView
,而无法确定如何设置使用
阅读器的配置

有人能帮我吗

viewDidLoad

WKWebViewConfiguration *config = [NSClassFromString(@"WKWebViewConfiguration") alloc] init];
    // Configuration of Reader goes here?
    wkWebView = [[wkWebViewClass alloc] initWithFrame:frame configuration:config];
    [self.view addSubview:wkWebView];
}
不能为WKWebView(或UIWebView)启用“阅读器”模式

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

我突然想到,可以修改网站的HTML代码,使它看起来更像一个阅读器。似乎有一些服务已经做到了这一点,比如可读性:

只需将此URL加载到您的WKWebView中:


这将帮助您实现与Reader类似的功能。

第一件事:导入Safaries服务:

#import <SafariServices/SafariServices.h>

@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)
    }
}

只需改进@dzensik答案,因为iOS 11.0中不推荐使用“init(url:entersreadifavailable:)”

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)
        }
    }

您可以使用JavaScript启用reader视图

只要使用这个代码

webView.evaluateJavaScript("document.body.innerText”)
此代码正在获取网页中的文本

以下是reader view的全部代码

@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)
        }
    }
@iAction func ReaderViewTougle(\uSender:Any){
evaluateJavaScript(“document.body.innerText”){result,错误在
打印(结果!)
self.webView.loadHTMLString(“”)
h1{
字体大小:正常;
align=“justify”;
颜色:灰色;
线高:1.6;
}
错误
\(字符串(描述:self.webView.title))


\(字符串(描述:结果))


“”,baseURL:self.webView.url) } }

使用Xcode 12 beta版完成

很酷很高兴知道没有办法这么做。之前已经检查过可读性资料。假设苹果在WKWebKit中提供了访问其阅读器模式的权限。Readability.com不再是可用的Perfect!这正是我在Swift 3的url上默认输入Reader view所需的内容。
@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)
        }
    }