在 UIWebview 中拥有自己的链接

own links in a UIWebview

我尝试在 UIWebView 中使用自己的操作创建自己的 link。为此,我喜欢阅读我自己的 link 的价值。 我设法做到了,但我希望有人对此进行审查,因为我不确定这是否是最佳做法? :-)(乱码?)

我用一些自己的 link 创建了自己的 HTML,例如 :

let myHTML:String="<a href=\"mylink:" + sLinkValue + "\">" + sDisplayText + "</a>";

我创建了一个 UIWebView 并显示 HTML:

myWebView.loadHTMLString(htmlString, baseURL: noBase);

使用委托 UIWebViewDelegate 单击 link 时调用我的委托:

func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
    let requestdescription:String = request.description;
    println(requestdescription);
    let Valueonly:String=getValueOnly(requestdescription);
    println(Valueonly);
    return true
}

在上面的代码中,我的 requestdescription 具有以下值:<NSMutableURLRequest: 0x7fad4ae21130> { URL: mylink:My%20own%20Value }

getValueOnly 剪切并粘贴请求描述 returns "My Own Value"

我们应该这样做吗?

没有正式的 API 从 UIWebView 调用 obj-c 代码,您的方法是可行的。但是,有一些更通用的方法可以做到这一点:

  • sending data as JSON
  • javascript evaluation

我建议使用 request.URL.host 而不是使用辅助函数检索它并检查 request.URL.scheme isEqualToString "my link" 以确保它不是一些正常请求。顺便说一句,您可能不希望真正执行您的自定义方案的任何请求,因此 return false 可以避免这种情况。