如果在 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 - 防止用户输入非标准字符(如表情符号)
如何限制 UIAlertView UITextField 中的字符输入