在Swift中,如何通过单击uiwebview中的链接来触发另一个视图,例如uilalertview或模态弹出窗口?

时间:2014-12-18 16:59:17

标签: ios swift uiwebview

我有一个使用.loadHTMLstring(string, baseURL: nil )的uiwebview。我正在遍历嵌套对象,在for循环中使用此let string = "<h2>\(object.word)</h2>"在uiwebview中显示单词。

我想做这样的事情:let string = "<h2><a href="\(object.definition) target="UIAlertView">\(object.word)</a></h2>"

我想让用户点击uiwebview中的任何单词并让它触发一个警告或一个显示该单词定义的模态弹出窗口。

有关如何在Swift中完成此任务的任何建议吗?

2 个答案:

答案 0 :(得分:2)

  

我想让用户点击uiwebview中的任何单词并让它触发一个警告或一个显示该单词定义的模态弹出窗口。

设置网络视图的委托并实施webView:shouldStartLoadWithRequest:navigationType:。现在,只要单击Web视图中的链接,就会调用您的代码。这意味着您可以阅读请求并执行任何您喜欢的操作。

答案 1 :(得分:0)

我猜你会遇到一些编码问题......但这是一种让你定义的方法。 您可以使用自定义网址方案而不是自定义目标。

class ViewController: UIViewController, UIWebViewDelegate {

@IBOutlet weak var webView: UIWebView!

let definition = "My Definition is ...".stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
let string = "<h2><a href=\"/?My Definition is ...\" target=\"UIAlertView\">CLICK ME</a></h2>"
func testFunc() {

}

//MARK: WebView Delegate
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    switch navigationType {
    case .LinkClicked:
        if let theHref = request.URL.query?.stringByRemovingPercentEncoding {
            println(theHref)
        }
    default:
        break
    }

    return true
}


//MARK: View Lifecycle

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.webView.loadHTMLString(string, baseURL: NSURL())
    self.webView.delegate = self

}
}