自动将数据从UIPastboard填充到UIwebview

时间:2018-02-08 18:45:30

标签: swift uiwebview uipasteboard

我目前制作的应用程序有一个UIwebView和一个调用相机的按钮。我成功地将数据存储在UIPastboard中。但是,如何自动填充条形码数据以在基于Web的表单上显示?我知道我需要调用webViewDidFinishLoading。但我不确定如何以编程方式执行此操作。数据需要填充在表单的某个字段上。作为一名新开发者,有谁能告诉我如何实现这一目标?以下是我的代码。这是一个客户端,我已经更改了客户端隐私的URL请求。

import UIKit

class BarcodeViewController: UIViewController {
    @IBOutlet weak var justASecLbl: UILabel!
    @IBOutlet weak var mySearchBar: UISearchBar!
    @IBOutlet weak var myWebView: UIWebView!
    @IBOutlet weak var progressBar: UIProgressView!

    var myTimer = Timer()
    let barcodeData = ""

    @IBAction func back(_ sender: Any)
    {
        if myWebView.canGoBack
        {
            myWebView.goBack()
        }

        // Hide back button
    }

    @IBAction func next(_ sender: Any)
    {
        if myWebView.canGoForward
        {
            myWebView.goForward()
        }
    }

    @IBAction func refresh(_ sender: Any)
    {
        myWebView.reload()
    }

    func searchBarSearchButtonClicked(_ searchBar: UISearchBar)
    {
        mySearchBar.resignFirstResponder()

        if let url = URL(string: mySearchBar.text!)
        {
            myWebView.loadRequest(URLRequest(url: url))
        }
        else
        {
            print ("ERROR")
        }
    }

    func webViewDidStartLoad(_ webView: UIWebView)
    {
        UIApplication.shared.isNetworkActivityIndicatorVisible = true
    }

    func webViewDidFinishLoad(_ webView: UIWebView)
    {
        UIApplication.shared.isNetworkActivityIndicatorVisible = true
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Auto Route first boot to watchStation form website

        myWebView.loadRequest(URLRequest(url: URL(string: "https://www.wufoo.com/gallery/templates/surveys/customer-satisfaction-survey/")!))

    }

    // MARK: - Navigation

    @IBAction func unwindToHomeScreen(segue: UIStoryboardSegue) {
        dismiss(animated: true, completion: nil)
    }

    // TODO: Auto populate barcode Data to web form

    func webViewDidFinishLoad(webView: UIWebView!) {
        UIPasteboard.general.string = barcodeData

        // fill data
        let copiedBarcodeData = barcodeData
        let savedPassword = barcodeData

        let fillForm = String(format: "document.getElementById('expert_email').value = '\(copiedBarcodeData)';document.getElementById('BARCODE*').value = '\(savedPassword)';")
        webView.stringByEvaluatingJavaScript(from: fillForm)

        //check checkboxes
        webView.stringByEvaluatingJavaScript(from: "document.getElementById('BARCODE*').checked = true; document.getElementById('expert_terms_of_service').checked = true;")

        dispatch_after(DispatchTime.now(dispatch_time_t(DISPATCH_TIME_NOW), Int64(1 * NSEC_PER_SEC)), dispatch_get_main_queue()){
            webView.stringByEvaluatingJavaScript(from: "document.forms[\"new_expert\"].submit();")
        }
    }
}

0 个答案:

没有答案