有時候要求輸入含有emoji表情,這時候前面對中文的那種限定就不行了,由於在輸入時漢子和字母,數字都是佔一個字符,截取和遍歷輸入內容按字符來一點問題也沒有,可emoji表情佔兩個字符,會出現什麼狀況呢?假如限定輸入21個字符,輸到第20個字符時,我再輸入一個emoji表情,你截取21個字符,emoji表情就顯示不對了,那怎麼辦呢,下面給出方法編碼
NSInteger length; - (void)textFiledDidChange { NSString *toBeString = _inputTextField.text; //獲取高亮部分 UITextRange *selectedRange = [_inputTextField markedTextRange]; UITextPosition *position = [_inputTextField positionFromPosition:selectedRange.start offset:0]; // 沒有高亮選擇的字,則對已輸入的文字進行字數統計和限制 if (!position) { if (toBeString.length > 100 && _inputTextField.markedTextRange == nil) { //用字符串的字符編碼指定索引查找位置 NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:100]; if (rangeIndex.length == 1) { _inputTextField.text = [toBeString substringToIndex:100]; } else { //用字符串的字符編碼指定區域段查找位置 // NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, Max_Length)]; _inputTextField.text = [toBeString substringWithRange:NSMakeRange(0, length)]; } } else { length = toBeString.length; } } }