UITextField限制字数

通常,我们需要对 UITextField 的最大输入字符数进行限制。在编辑的时候进行限制总比提交表单后提示错误强。

第一步:添加委托

使 UITextView 所在的 UIViewController 遵从 UITextViewDelegate 协议,这次我们使用 extension :

extension MyViewController: UITextFieldDelegate{
    //your code
}

第二步:实现协议中的监听方法

对于 UITextField 来说:

extension MyViewController: UITextFieldDelegate{
    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        guard let oldText = textField.text else {return true}
        let newLength = oldText.characters.count + string.characters.count
        return newLength <= 17
    }
}
  • textField: 当前 UITextField 对象

  • range: 将要被替换的文本的范围

  • string: 将要替换为的文本

  • 17 是我们定义的最大输入限制字数

首先使用 guard 语句确保当前文本框内有文字内容。然后计算字符串改变之后的新长度,等于旧长度加上新长度。最后返回一个布尔值,判断长度是否大小于等于17,如果小于则可以把内容显示到文本框中,否则再继续输入也没有反应。

对于 UITextView 来说:

该协议的监听方法的内容基本一致,只是把方法中的关键字名称替换了就可以了。可能还需要限制 UITextView 的输入行数:

textView.textContainer.maximumNumberOfLines = 10

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容