从本机应用程序的 HTML 页面中选择单选按钮
Selecting a Radio Button in an HTML page from a native app
如何在 Web 视图中加载的 HTML 页面中检查 单选按钮?
示例:
我在 HTML 页面中嵌入了两个单选按钮:
- 全部允许
- 限制访问
我想构建一个应用程序,如果点击 UIButton 或 UISwitch,程序将自动 select "Restrict Access" 并将 selection 打印到控制台。
此处 Xcode 和 Swift 编程的新手。
使用 Xcode7、Swift 2.0
您可以使用 WebKit 的 WKWebView
来实现这一点。只需将 WKWebView
添加到您的视图控制器并使用单选按钮加载页面。您可能会从您的服务器加载一个页面,但出于测试目的,我正在加载我添加到 Xcode 项目的 HTML 文件。当您按下按钮时,您会评估一个检查单选按钮的 Javascript 字符串。
这是一个工作示例:
ViewController:
import UIKit
import WebKit
class ViewController: UIViewController {
let webView = WKWebView()
let button = UIButton(type: .RoundedRect)
override func viewDidLoad() {
super.viewDidLoad()
webView.frame = CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height - 60)
view.addSubview(webView)
let path = NSBundle.mainBundle().pathForResource("test", ofType: "html")
let url = NSURL(fileURLWithPath: path!)
webView.loadRequest(NSURLRequest(URL: url))
// or load the HTML from your server
// webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://yourdomain.com/yourpage")!))
button.frame = CGRectMake(50, 520, view.bounds.size.width - 100, 40)
button.backgroundColor = UIColor.lightGrayColor()
button.setTitle("Press", forState: .Normal)
button.addTarget(self, action: Selector("didPressButton:"), forControlEvents: .TouchUpInside)
view.addSubview(button)
}
func didPressButton(button: UIButton) {
let jsString = "document.getElementById('res').checked = true;"
webView.evaluateJavaScript(jsString) { (result, error) -> Void in
print(result)
print(error)
}
}
}
HTML:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {padding: 30px; font-size: 30px}
</style>
</head>
<body>
<h1>Test</h1>
<form action="radio.html">
<input type="radio" id="all" name="allow_all" value="allow_all"><label for="all"> Allow all</label><br>
<input type="radio" id="res" name="restrict" value="restrict"><label for="res"> Restrict Access</label><br>
</form>
</body>
现在,当您按下按钮时,单选按钮就会被设置。执行此操作的方法有一个完成闭包,该闭包在 Javascript 被评估时执行。
如果 Javascript 评估成功,Javascript 返回的值将传递给可选 result
对象中的闭包。
在这种情况下,返回值 1
,表示单选按钮现在已被选中。
如果 Javascript 评估失败,则会创建一个 error
对象并将其交给闭包。所以你可以检查 Javascript 调用是否成功。
如何在 Web 视图中加载的 HTML 页面中检查 单选按钮?
示例:
我在 HTML 页面中嵌入了两个单选按钮:
- 全部允许
- 限制访问
我想构建一个应用程序,如果点击 UIButton 或 UISwitch,程序将自动 select "Restrict Access" 并将 selection 打印到控制台。
此处 Xcode 和 Swift 编程的新手。
使用 Xcode7、Swift 2.0
您可以使用 WebKit 的 WKWebView
来实现这一点。只需将 WKWebView
添加到您的视图控制器并使用单选按钮加载页面。您可能会从您的服务器加载一个页面,但出于测试目的,我正在加载我添加到 Xcode 项目的 HTML 文件。当您按下按钮时,您会评估一个检查单选按钮的 Javascript 字符串。
这是一个工作示例:
ViewController:
import UIKit
import WebKit
class ViewController: UIViewController {
let webView = WKWebView()
let button = UIButton(type: .RoundedRect)
override func viewDidLoad() {
super.viewDidLoad()
webView.frame = CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height - 60)
view.addSubview(webView)
let path = NSBundle.mainBundle().pathForResource("test", ofType: "html")
let url = NSURL(fileURLWithPath: path!)
webView.loadRequest(NSURLRequest(URL: url))
// or load the HTML from your server
// webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://yourdomain.com/yourpage")!))
button.frame = CGRectMake(50, 520, view.bounds.size.width - 100, 40)
button.backgroundColor = UIColor.lightGrayColor()
button.setTitle("Press", forState: .Normal)
button.addTarget(self, action: Selector("didPressButton:"), forControlEvents: .TouchUpInside)
view.addSubview(button)
}
func didPressButton(button: UIButton) {
let jsString = "document.getElementById('res').checked = true;"
webView.evaluateJavaScript(jsString) { (result, error) -> Void in
print(result)
print(error)
}
}
}
HTML:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {padding: 30px; font-size: 30px}
</style>
</head>
<body>
<h1>Test</h1>
<form action="radio.html">
<input type="radio" id="all" name="allow_all" value="allow_all"><label for="all"> Allow all</label><br>
<input type="radio" id="res" name="restrict" value="restrict"><label for="res"> Restrict Access</label><br>
</form>
</body>
现在,当您按下按钮时,单选按钮就会被设置。执行此操作的方法有一个完成闭包,该闭包在 Javascript 被评估时执行。
如果 Javascript 评估成功,Javascript 返回的值将传递给可选 result
对象中的闭包。
在这种情况下,返回值 1
,表示单选按钮现在已被选中。
如果 Javascript 评估失败,则会创建一个 error
对象并将其交给闭包。所以你可以检查 Javascript 调用是否成功。