UITextField、UITextView 字数限制

iOS输入框字数限制,需要注意判断高亮状态,否则加入需要限制输入10个字,在输入9个字之后,再次使用系统拼音键盘就输入不了了。输入的拼音会被截取。正确做法如下:

UITextfield

nickNameTextfield.addTarget(self, action: #selector(nickNameValueChanged), for: .editingChanged)

    @objc func nickNameValueChanged() {
        guard let text = nickNameTextfield.text else {
            return
        }
        // 判断是否存在高亮字符,如果有,则不进行字数统计和字符串截断
        if let selectedRange = nickNameTextfield.markedTextRange {
            let position = nickNameTextfield.position(from: selectedRange.start, offset: 0)
            if position != nil {
                return
            }
        }
        if text.count > 12 {
            nickNameTextfield.text = text.substring(to: 12)
        }
    }
UITextView

textView和textfield类似,只是不需要添加通知,直接使用代理方法判断即可。

   /// 限制输入字数
    func textViewDidChange(_ textView: UITextView) {
        // 判断是否存在高亮字符,如果有,则不进行字数统计和字符串截断
        if let selectedRange = textView.markedTextRange {
            let position = textView.position(from: selectedRange.start, offset: 0)
            if position != nil {
                return
            }
        }
        if let text = textView.text, text.count > 12 {
            textView.text = text.substring(to: 12)
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容