UITextField輸入有emoji表情時的字數限定

有時候要求輸入含有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;
        }
    }
}
相關文章
相關標籤/搜索