實(shí)現(xiàn)代碼
<1> 在VC中的viewDidLoad:方法實(shí)現(xiàn)對(duì)UITextField的監(jiān)聽(tīng)
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFiledEditChanged:)name:UITextFieldTextDidChangeNotification object:nil];
<2> 實(shí)現(xiàn)監(jiān)聽(tīng)鍵盤(pán)輸入的方法
-(void)textFiledEditChanged:(NSNotification*)obj {
UITextField *textField = (UITextField *)obj.object;
NSString *toBeString = textField.text;
NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 鍵盤(pán)輸入模式
if ([lang isEqualToString:@"zh-Hans"]) { //簡(jiǎn)體中文輸入,包括簡(jiǎn)體拼音雏蛮,健體五筆,簡(jiǎn)體手寫(xiě)
UITextRange *selectedRange = [textField markedTextRange];
//獲取高亮部分
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
//沒(méi)有高亮選擇的字话原,則對(duì)已輸入的文字進(jìn)行字?jǐn)?shù)統(tǒng)計(jì)和限制
if (!position) {
if(toBeString.length > 10) {
textField.text = [toBeString substringToIndex:10];
[SVProgressHUD showInfoWithStatus:@"不能超過(guò)10個(gè)字符"];
}
}
//有高亮選擇的字符串,則暫不對(duì)文字進(jìn)行統(tǒng)計(jì)和限制
else{
}
}
//中文輸入法以外的直接對(duì)其統(tǒng)計(jì)限制即可翠订,不考慮其他語(yǔ)種情況:emoji表情婚夫、en-US
else{
if (toBeString.length > 10) {
[SVProgressHUD showInfoWithStatus:@"不能超過(guò)10個(gè)字符"];
textField.text= [toBeString substringToIndex:10];
}
}
}
<3>在dealloc里注銷(xiāo)掉監(jiān)聽(tīng)方法
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UITextFieldTextDidChangeNotification
object:cell.nicknameTextfield];
}
PS:可以解決各種輸入模式:emoji表情、en-US英文程帕、zh-Hans中文輸入模式下的字符輸入長(zhǎng)度的監(jiān)聽(tīng)
轉(zhuǎn)自:http://blog.csdn.net/m372897500/article/details/25820353