首先利用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
本人新手,此博客僅用來學習和筆記,有不對的地方請指出,大家可以一起討論