iOS TextField 關于中文字數(shù)限制包含表情

TextField 限制字數(shù)的方法

  • 代理限制字數(shù)
    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
    用這個方法來進行字數(shù)限制,但是這個方法到現(xiàn)在也不能限制中文,這個方法給我最多的就是用在做限制手機號碼等純數(shù)字或者密碼輸入等數(shù)字英文字符的限制??

  • 通知
    在viewdidload注冊一個通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:_textField.text];
  • 往textfield添加一個Target
[_textField addTarget:self action:@selector(textFieldEditChanged:) forControlEvents:UIControlEventEditingChanged];
  • 就上面三種方法而言,我個人會使用第三種方法,理由嘛就是能不用通知就不用通知
    下面來說具體方法
NSInteger length;//定義length來保存字數(shù)
-(void)textFieldEditChanged:(UITextField *)textField
{

 
    //字數(shù)限制
    NSInteger WordCount = 10;
    NSString *toBeString = textField.text;
    UITextRange *selectedRange = [textField markedTextRange];
    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
    // 沒有高亮選擇的字,則對已輸入的文字進行字數(shù)統(tǒng)計和限制
    if (!position)
    {
        if (toBeString.length > WordCount && textField.markedTextRange == nil)
        {
            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:WordCount];
            if (rangeIndex.length == 1)
            {
                textField.text = [toBeString substringToIndex:WordCount];
            }
            else
            {
                textField.text = [toBeString substringWithRange:NSMakeRange(0, length)];
            }
        } else {
            length = toBeString.length;
        }
    }
}

總結(jié)

現(xiàn)在對于字數(shù)限制,我是比較推薦使用我現(xiàn)在用的這種,符合中文的需求
之前其實并沒有寫那么復雜,只是寫了如果大于字數(shù)限制,就直接切割多少個字符限制的字符串
后來因為發(fā)現(xiàn)表情會占用兩個字節(jié),如果你最后剛好9個,多一個表情就會變成11,切割變成了10,就會照成表情的不完整,會出現(xiàn)比較嚴重的bug,在網(wǎng)上綜合例子弄了自己最適合的,或許有更好的,歡迎拍磚~

雖然覺得自己學的不好,但也是慢慢累積,希望有一天能夠幫助到別人,不能一味的總是獲取別人的成果.

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容