如何解决如果在 UITextField 中输入更多字符,则显示警报
当输入超过允许的字符数时,我想显示与图片中相同的警告。导入时会发生这种情况,无需任何其他操作。
这是我限制字符的代码:
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?,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
}
但是如何在粘贴字符串时自动断开尾随字符?而当你将光标放在某处添加文本时,多余的字符会被替换吗? 希望大家理解问题,抱歉我的英语不好!
解决方法
这种警报看起来像吐司。有一个名为 Toast-Swift 的开源 iOS 库可以产生这种警报。将其安装到您的项目中,然后在 textField:shouldCharactersIn:replacementString:
方法返回之前,您可以调用该组件以显示警报:
self.view.makeToast("Character limit exceeded.")
您可以查看组件文档以了解此对话框的更高级自定义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。