1、定義一個(gè)事件:
- (void)limitLength:(UITextField *)sender {
bool isChinese;//判斷當(dāng)前輸入法是否是中文
if ([[[UITextInputMode currentInputMode] primaryLanguage] isEqualToString: @"en-US"]) {
isChinese = false;
} else {
isChinese = true;
}
if (sender == self.textField) {
// 5位
NSString *str = [[self.textField text] stringByReplacingOccurrencesOfString:@"?" withString:@""];
if (isChinese) { //中文輸入法下
UITextRange *selectedRange = [self.textField markedTextRange];
//獲取高亮部分
UITextPosition *position = [self.textField positionFromPosition:selectedRange.start offset:0];
// 沒有高亮選擇的字,則對(duì)已輸入的文字進(jìn)行字?jǐn)?shù)統(tǒng)計(jì)和限制
if (!position) {
NSLog(@"漢字");
if ( str.length>=6) {
NSString *strNew = [NSString stringWithString:str];
[self.textField setText:[strNew substringToIndex:5]];
}
} else {
NSLog(@"輸入的英文還沒有轉(zhuǎn)化為漢字的狀態(tài)");
}
} else {
NSLog(@"str=%@; 本次長(zhǎng)度=%ld",str,[str length]);
if ([str length] >= 6) {
NSString *strNew = [NSString stringWithString:str];
[self.textField setText:[strNew substringToIndex:5]];
}
}
}
}
2、對(duì)UITextField控件添加監(jiān)聽事件:
[self.textField addTarget:self action:@selector(limitLength:) forControlEvents:UIControlEventEditingChanged];