記錄一下限制輸入字符的判斷。不僅局限于中文或英文
- 首先在ViewDidLoad中注冊通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldEditChanged:)
name:@"UITextFieldTextDidChangeNotification" object:self.userTF];
- 下面是判斷邏輯 由于需求有中文鍵盤下的字母數字輸入,所以其中那部分判斷如不需要可以去除
// 輸入字符判斷
-(void)textFieldEditChanged:(NSNotification *)obj {
UITextField *textField = (UITextField *)obj.object;
NSString *toBeString = textField.text;
NSString *lang = [textField.textInputMode primaryLanguage];
if ([lang isEqualToString:@"zh-Hans"])// 簡體中文輸入
{
//獲取高亮部分
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
// 沒有高亮選擇的字,則對已輸入的文字進行字數統計和限制
if (!position || !selectedRange)
{
if (toBeString.length > MAX_CHINESE_LENGTH)
{
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_CHINESE_LENGTH];
if (rangeIndex.length == 1)
{
textField.text = [toBeString substringToIndex:MAX_CHINESE_LENGTH];
}
else
{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_CHINESE_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
if (toBeString.length > MAX_ENGLISH_LENGTH)
{
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_ENGLISH_LENGTH];
if (rangeIndex.length == 1)
{
textField.text = [toBeString substringToIndex:MAX_ENGLISH_LENGTH];
}
else
{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_ENGLISH_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
}
// 中文輸入法以外的直接對其統計限制即可,不考慮其他語種情況
else
{
if (toBeString.length > MAX_ENGLISH_LENGTH)
{
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_ENGLISH_LENGTH];
if (rangeIndex.length == 1)
{
textField.text = [toBeString substringToIndex:MAX_ENGLISH_LENGTH];
}
else
{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_ENGLISH_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
}
附上我的博客鏈接:oragekk'Blog 歡迎留言-不過評論系統換成了disqus需要搭梯子哦