關於限制輸入字數以前也做過,網上也很多方法。但都不夠完美,本方法可防止中文聯想、粘貼等突破長途限制、可防止Emoji截為兩半導致編碼出問題。
- (void)textFieldDidChange:(UITextField *)textField { if (textField == self.textFieldName) { if (textField.text.length > 15) {
UITextRange *markedRange = [textField markedTextRange];
if (markedRange) {
return;
} //Emoji占2個字符,如果是超出了半個Emoji,用15位置來截取會出現Emoji截為2半 //超出最大長度的那個字符序列(Emoji算一個字符序列)的range NSRange range = [textField.text rangeOfComposedCharacterSequenceAtIndex:15]; textField.text = [textField.text substringToIndex:range.location]; } } }