Swift 限制UITextField字数的方法

36 篇文章 0 订阅
6 篇文章 0 订阅

首先利用UITextField的addTarget方法,监听UITextField的文字变化:

textField.addTarget(self, action: "textDidChange:", forControlEvents: UIControlEvents.EditingChanged)

然后实现textDidChange:方法,这里直接判断text的长度,在输入中文时会有坑,所以判读输入格式,然后判断是否存在被mark的text,在中文输入的过程中的字母就是被mark的,如果没有mark就判断长度,这样就能够实现我们想要的效果了

var kMaxLength: Int {
    return 6
}//注意:此结构在import下,class上(大神勿喷)

func textDidChange(sender:UITextField) {
        print("\(textField.text)")
        let lang = textInputMode?.primaryLanguage
        if lang == "zh-Hans" {
            let range = textField.markedTextRange
            if range == nil {
                if textField.text?.characters.count >= kMaxLength {
                    textField.text = textField.text?.substringToIndex((textField.text?.startIndex.advancedBy(kMaxLength))!)
                }
            }
        }
        else {
            if textField.text?.characters.count >= kMaxLength {
                textField.text = textField.text?.substringToIndex((textField.text?.startIndex.advancedBy(kMaxLength))!)
            }
        }
    }

这里还有一点小坑,就是这是最新的swift的截取字符串的方法,String.startIndex(或endIndex).advancedBy()能够取到需要的String.Index

本人新手,此博客仅用来学习和笔记,有不对的地方请指出,大家可以一起讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值