UITextField或UITextView過濾拼音

weixin_34146805發表於2017-10-30

在使用UITextField或UITextView實時實時計算content的長度的時候,如果在拼音輸入後,但沒有選擇具體是哪個字時,這時的計算可能會出現一些偏差。這是就用到了markedTextRange。

可以發現UITextField或UITextView輸入文字的時候輸入的文字會有兩個狀態——選中與未選中。當我們輸入拼音但未選擇具體漢字時,處於未選中狀態,此時UITextField或UITextView的markedTextRange為nil。如果我們想過濾拼音,不妨可以這麼做:

self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

- (void)textFieldDidChange:(UITextField *)textfield
{
  if (textfield.markedTextRange == nil) {
        NSLog(@"%@",textfield.text);  
    }
}

相關文章