Как я могу использовать ссылку html в UIWebView, чтобы передать представление в стек? - PullRequest
1 голос
/ 03 апреля 2012

У меня есть UIWebView, содержащий текст в формате html.В тексте некоторые слова являются ссылками.При нажатии на них они должны выдвинуть другое представление в стек.Как мне написать ссылку html и соответствующий код target-c, чтобы это работало?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

Настройте делегата для UIWebView, после чего вы можете обработать действие ссылки, щелкнув:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
    if ( inType == UIWebViewNavigationTypeLinkClicked ) {
        [self.navigationController pushViewController:vc animated:YES];
        return NO;
    }

    return YES;
}
0 голосов
/ 25 февраля 2017

Swift 3: Полный пример UIWebView для перемещения представления в стек и открытия другого html-файла в связке при нажатии на ссылку html, например. <a href="imprint.html">imprint</a>

class WebViewController: UIViewController {

    @IBOutlet weak var webView: UIWebView!     
    var filename:String?

    override func viewDidLoad() {
        super.viewDidLoad()

        guard filename != nil else {
            fatalError("filename not defined")
        }

        view.backgroundColor =  UIColor.white

        webView.isOpaque = false;
        webView.delegate = self
        webView.backgroundColor = UIColor.clear

        //remove file extension first
        filename = filename!.replace(".html", replacement: "")

        let localfilePath = Bundle.main.url(forResource: filename, withExtension: "html")
        let myRequest = NSURLRequest(url: localfilePath!)
        webView.loadRequest(myRequest as URLRequest)
    }

    ...
}

extension WebViewController: UIWebViewDelegate {

    func webViewDidFinishLoad(_ webView: UIWebView) {
        //set view title from html document
        let pageTitle = webView.stringByEvaluatingJavaScript(from: "document.title")
        navigationItem.title = pageTitle
    }

    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {

         if navigationType == .linkClicked,
            let urlStr = request.url?.absoluteString,
            !urlStr.contains("http://"),
            let filename = request.url?.lastPathComponent, //e.g. imprint.html
            let vc = storyboard?.instantiateViewController(withIdentifier: "WebView") as? WebViewController{

            vc.filename = filename

            self.navigationController?.pushViewController(vc, animated: true)

            return false
        }

        return true
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...