Мне нужна помощь для запуска Javascript Alert & Confirm в простом веб-приложении, созданном в Xcode - PullRequest
0 голосов
/ 04 февраля 2019

Мне нужна помощь для запуска предупреждений JavaScript, подтвердите это в простом приложении, созданном с помощью xcode, с веб-просмотром внутри

Мой код в ViewController.swift:

import UIKit
import WebKit

class ViewController: UIViewController {


    @IBOutlet weak var WebView: WKWebView!

    override func viewDidLoad() {

        super.viewDidLoad()
        let url = URL(string: "MY_URL")
        let request = URLRequest(url: url!)

        WebView.load(request)

    }


}

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Я исправляю проблему с помощью этого кода:

import UIKit

import WebKit

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {


@IBOutlet weak var WebView: WKWebView!


override func viewDidLoad() {

    super.viewDidLoad()

    WebView = WKWebView(frame: self.view.frame)
    WebView.uiDelegate = self
    WebView.navigationDelegate = self
    view.addSubview(WebView!)

    let url = URL(string: "MY_URL")
    let request = URLRequest(url: url!)

    WebView.load(request)


    // Do any additional setup after loading the view, typically from a nib.
}

func webView(_ WebView: WKWebView,
             runJavaScriptAlertPanelWithMessage message: String,
             initiatedByFrame frame: WKFrameInfo,
             completionHandler: @escaping () -> Void) {

    let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert)
    let title = NSLocalizedString("OK", comment: "OK Button")
    let ok = UIAlertAction(title: title, style: .default) { (action: UIAlertAction) -> Void in
        alert.dismiss(animated: true, completion: nil)
    }
    alert.addAction(ok)
    present(alert, animated: true)
    completionHandler()
}

func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {

    let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)

    alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
        completionHandler(true)
    }))

    alertController.addAction(UIAlertAction(title: "Cancella", style: .default, handler: { (action) in
        completionHandler(false)
    }))

    self.present(alertController, animated: true, completion: nil)
}

}

0 голосов
/ 04 февраля 2019

Первое, первое добавление,

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

Второе добавление удаления к вашему коду внутри viewDidLoad()

override func viewDidLoad() {
    super.viewDidLoad()

    WebView = WKWebView(frame: self.view.frame)
    WebView.uiDelegate = self
    WebView.navigationDelegate = self
    view.addSubview(WebView!)

    // your code goes from year

    let url = URL(string: "MY_URL")
    let request = URLRequest(url: url!)
    WebView.load(request)

}

Это основная информация, которую я могу предоставить, исходя из вашего кода.

Более подробно см. Ссылка , это может очистить все ваши сомнения: D

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