Как закрыть страницу в UIWebView и вернуться в приложение - PullRequest
4 голосов
/ 18 ноября 2010

В моем приложении, нажав кнопку, которую я хочу открыть UIWebView на полном экране, UIWebView загрузит страницу HTML, на которой будет кнопка, которая закроет UIWebView и вернется в приложение.

Проблема в том, что мне не удается заставить кнопку закрыть страницу и вернуться в приложение.Я пробовал parent.history.back() и history.back и несколько версий self.close(), но, похоже, ничего не работает (Кстати, он работает в браузере, но не из UIWebView.

Любая идея? Спасибо -Z

Ответы [ 2 ]

10 голосов
/ 18 ноября 2010
[UIWebViewDelegate][1] has your answer

    - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request            
                                    navigationType:(UIWebViewNavigationType)navigationType {
        if (request.URL == "SOME URL TO CLOSE WINDOW") {
            //do close window magic here!!
            [self stopLoading];
            return NO;
        }
        return YES;
    }
-(void)stopLoading{
    [_webView removeFromSuperview];
}

  [1]: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebViewDelegate_Protocol/Reference/Reference.html
1 голос
/ 07 октября 2017

Обновлено для Swift 3:

Если вы хотите закрыть страницу UIWebView и вернуться в приложение, используйте код ниже:

import UIKit

class ViewController: UIViewController, UIWebViewDelegate{

    @IBOutlet weak var mWebView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        mWebView.delegate = self
    }

    override func viewWillAppear(_ animated: Bool) {
        self.loadWebView()
    }

    func loadWebView()  {
        mWebView.loadRequest(URLRequest(url: URL(string: "https://stackoverflow.com/")!))
    }

    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        print("request: \(request.description)")
        if request.description == "https://stackoverflow.com/users/login"{
            //do close window magic here!!
            print("url matches...")
            stopLoading()
            return false
        }
        return true
    }

    func stopLoading() {
        mWebView.removeFromSuperview()
        self.moveToVC()
    }

    func moveToVC()  {
        print("Write code where you want to go in app")
        // Note: [you use push or present here]
        let vc = 
          self.storyboard?.instantiateViewController(withIdentifier: 
          "storyboardID") as! YourViewControllerName
        self.navigationController?.pushViewController(vc, animated: true)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...