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

jope3014 8年前發布 | 4K 次閱讀 C/C++ Objective-C

有時候要求輸入含有emoji表情,這時候前面對中文的那種限定就不行了,因為在輸入時漢子和字母,數字都是占一個字符,截取和遍歷輸入內容按字符來一點問題也沒有,可emoji表情占兩個字符,會出現什么情況呢?假如限定輸入21個字符,輸到第20個字符時,我再輸入一個emoji表情,你截取21個字符,emoji表情就顯示不對了,那怎么辦呢,下面給出方法,還是

- (void)textFiledDidChange:(UITextField *)textField
{
    NSString *toBeString = textField.text;
    
    //獲取高亮部分
    UITextRange *selectedRange = [textField markedTextRange];
    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
    
    // 沒有高亮選擇的字,則對已輸入的文字進行字數統計和限制
    if (!position)
    {
        if (toBeString.length > Max_Length)
        {
            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:Max_Length];
            if (rangeIndex.length == 1)
            {
                textField.text = [toBeString substringToIndex:Max_Length];
            }
            else
            {
                NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, Max_Length)];
                textField.text = [toBeString substringWithRange:rangeRange];
            }
        }
    }
    
 }


 本文由用戶 jope3014 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!