swift - 检查是否在 UIWebView 中按下了链接

标签 swift url uiwebview nsurl

我有一个 UIWebView,它的 URL 设置如下:

let url = NSURL (string: "http://google.com");
    let requestObj = NSURLRequest(URL: url!);
    webView.loadRequest(requestObj);

但是我希望能够检查用户是否按下了链接。

我试过这样简单的事情:

if (url != "http://google.com") {
            println("Do Stuff");
        }

效果很好,但是这只会在 viewDidLoad 中检查它,我现在想在每次按下链接或 URL 更改时检查它。

最佳答案

您可以通过自定义函数检查 URL

func validateUrl (stringURL : NSString) -> Bool {

    var urlRegEx = "((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+"
    let predicate = NSPredicate(format:"SELF MATCHES %@", argumentArray:[urlRegEx])
    var urlTest = NSPredicate.predicateWithSubstitutionVariables(predicate)

    return predicate.evaluateWithObject(stringURL)
}

它将返回真或假。那就是 bool

例如:

if (validateUrl("http://google.com")) {
    //will return true
    println("Do Stuff");
}
else
{
    //If it is false then do stuff here.
}

中调用这个函数
func webView(WebViewNews: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
    if (validateUrl(request.URL().absoluteString())) {
        //if will return true
        println("Do Stuff");
    }
}

来源:https://stackoverflow.com/a/24207852/3202193

关于swift - 检查是否在 UIWebView 中按下了链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31347143/

相关文章:

ios - 链接两个 ViewController 时出错

ios - 如何在共享时使 URL 字符串可链接

android - 如果 url 具有特殊字符,如何在 android 中使用 url 深度链接应用程序

ios - 在后台加载一个 View (及其 WebView 对象),然后执行 Segue

swift - 以编程方式向表情符号添加肤色修饰符

url - 如何在docker镜像中创建非硬编码的URL路径以调用后端服务?

url - 有没有一种方法可以禁止电子邮件引擎自动超链接URL?

ios - 无法在 xCode 4.4 上的新项目上的 UIWebView 上显示键盘

ios - 如何在 iOS 中交换两个 UIWebView

ios - 使用 AVFoundation 类播放音频文件的引用部分