我目前制作的应用程序有一个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();")
}
}
}