如何检测 URL 是不是已粘贴/输入到 UITextView? Swift iOS [关闭]

Posted

技术标签:

【中文标题】如何检测 URL 是不是已粘贴/输入到 UITextView? Swift iOS [关闭]【英文标题】:How to detect if a URL has been pasted/typed into a UITextView? Swift iOS [closed]如何检测 URL 是否已粘贴/输入到 UITextView? Swift iOS [关闭] 【发布时间】:2021-04-15 21:04:37 【问题描述】:

使用 Swift,我如何检测用户将 URL 输入/粘贴到 UITextView 中?

【问题讨论】:

这能回答你的问题吗? how to know when text is pasted into UITextView @Scott,部分回答了这个问题,但前提是有人要粘贴一个网址。如果有人输入了一个 url,我们如何检测呢? 【参考方案1】:

如果您不关心是否粘贴或键入文本,您可以使用此解决方案:

func textViewDidChange(textView: UITextView) 

    if (urlExists(textView.text))
    
        // URL exists...
    


func urlExists(_ input: String) -> Bool 
    let detector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
    let matches = detector.matches(in: input, options: [], range: NSRange(location: 0, length: input.utf16.count))

    for match in matches 
        guard let range = Range(match.range, in: input) else  continue 
        let url = input[range]
        print(url)
        return true
    
    return false

如果您需要知道它已粘贴,请使用它。 如果有人粘贴,它将不止一个字符。我们应该避免使用 UIPasteboard,因为它可能会在这种情况下冻结并向用户显示不必要的消息。

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool 
    if text.count > 1 
       // paste scenario
        if (urlExists(text.text))
        
            // URL exists...
        
     else 
       //normal typing
    
    return true

【讨论】:

以上是关于如何检测 URL 是不是已粘贴/输入到 UITextView? Swift iOS [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 react-native 文本输入中检测粘贴事件

如何检测文本字段中是不是包含文本而不是数值?

如何使用 VC++ 检测是不是已按下某个键

Django 是不是有模板标签可以检测 URL 并将其转换为超链接?

如何在客户端使用 JavaScript 来检测页面是不是已加密?

FileSystemWatcher不会使用'mv'命令检测移动到目录中的文件,也不会在ubuntu上剪切和粘贴