从本机应用程序的 HTML 页面中选择单选按钮

Selecting a Radio Button in an HTML page from a native app

如何在 Web 视图中加载的 HTML 页面中检查 单选按钮

示例:

我在 HTML 页面中嵌入了两个单选按钮:

  1. 全部允许
  2. 限制访问

我想构建一个应用程序,如果点击 UIButtonUISwitch,程序将自动 select "Restrict Access" 并将 selection 打印到控制台。

此处 Xcode 和 Swift 编程的新手。

使用 Xcode7Swift 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 调用是否成功。