如果在 UITextField 中输入了更多字符,则显示警报

Posted

技术标签:

【中文标题】如果在 UITextField 中输入了更多字符,则显示警报【英文标题】:Displays a alert if more characters are entered in UITextField 【发布时间】:2021-02-09 02:35:21 【问题描述】:

当输入超过允许的字符数时,我想显示与图片中相同的警告。这会在导入时发生,无需任何其他操作。

enter image description here

这是我限制字符的代码:

 private func textLimit(existingText: String?, newText: String, limit: Int) -> Bool 
        let text = existingText ?? ""
        let isAtLimit = text.count + newText.count <= limit
        return isAtLimit
    

和委托:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 
        return self.textLimit(existingText: textField.text, newText: string, limit: 5)
    

我找到了解决办法:

   private func textLimit(existingText: String?, newText: String, limit: Int) -> Bool 
        let text = existingText ?? ""
        let limitText = text.count + newText.count
        let isAtLimit = text.count + newText.count <= limit
        if limitText > limit 
            var alert: UIAlertController!
            alert = UIAlertController(title: "", message: "Character limit exceeded", preferredStyle: .alert)
            self.present(alert, animated: true, completion: nil)
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) 
                alert.dismiss(animated: true, completion: nil)
            
        
        return isAtLimit
    

但是如何在粘贴字符串时自动断开尾随字符?而当你把光标放在某处添加文字时,多余的字符会被替换掉吗? 希望大家理解这个问题,对不起我的英语不好!

【问题讨论】:

您的限制字符代码看起来不错;是吗?如果是这样,关于警报的部分在哪里? 查看此文本字段委托方法的实现 - ***.com/questions/433337/… 【参考方案1】:

这种警报看起来像 Toast。有一个名为Toast-Swift 的开源ios 库会产生这种警报。将其安装到您的项目中,然后在返回 textField:shouldCharactersIn:replacementString: 方法之前,您可以调用该组件以显示警报:

self.view.makeToast("Character limit exceeded.")

您可以查看组件文档以了解此对话框的更高级自定义。

【讨论】:

看看库如何显示警报并尝试在您的代码中重现它。

以上是关于如果在 UITextField 中输入了更多字符,则显示警报的主要内容,如果未能解决你的问题,请参考以下文章

如何将 uitextfield 字符范围限制为 10 位

UITextField - 防止用户输入非标准字符(如表情符号)

如何限制 UIAlertView UITextField 中的字符输入

将 UITextField 限制在某个字符范围内

如何在 UITextField 子类中拦截来自键盘的文本输入事件

UITextField中文输入法输入时对字符长度的限制