IOS:UITextField輸入中文時限制長度
阿新 • • 發佈:2019-01-06
1、初始化時註冊通知notification:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
name:@"UITextFieldTextDidChangeNotification"
object:_textFiled];
2、 實現監聽方:
#define kMaxLength 40
-(void)textFiledEditChanged:(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) {
if (toBeString.length > kMaxLength) {
textField.text = [toBeString substringToIndex:kMaxLength];
}
}
}
else{
if (toBeString.length > kMaxLength) {
textField.text = [toBeString substringToIndex:kMaxLength];
}
}
}
3、在dealloc裡登出掉監聽方法:
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:_textFiled];
}
OK,輸入中文時可以限制輸入漢字的長度了。