Swift 限制UITextField字數的方法

首先利用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

本人新手,此博客僅用來學習和筆記,有不對的地方請指出,大家可以一起討論

發佈了43 篇原創文章 · 獲贊 40 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章