iOS UITextField 限制只能输入中文
2016-09-27 18:26
483 查看
需求: UITextFiled 限制只能输入4个中文;一起一切字符,禁止输入;
解决方案:添加监听,在监听中,过滤字符;
上干货:
1,声明变量:
@property (nonatomic, strong) UITextField *textField;
2,添加监听:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
name:UITextFieldTextDidChangeNotification object:self.textField];
3,在监听中,过滤非中文字符,并且限制中文字符长度;
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
//过滤非汉字字符
textField.text = [self filterCharactor:textField.text withRegex:@"[^\u4e00-\u9fa5]"];
if (textField.text.length >= 4) {
textField.text = [textField.text substringToIndex:4];
}
return NO;
}
- (void)textFiledEditChanged:(id)notification{
UITextRange *selectedRange = self.textField.markedTextRange;
UITextPosition *position = [self.textField positionFromPosition:selectedRange.start offset:0];
if (!position) { //// 没有高亮选择的字
//过滤非汉字字符
self.textField.text = [self filterCharactor:self.textField.text withRegex:@"[^\u4e00-\u9fa5]"];
if (self.textField.text.length >= 4) {
self.textField.text = [self.textField.text substringToIndex:4];
}
}else { //有高亮文字
//do nothing
}
}
//根据正则,过滤特殊字符
- (NSString *)filterCharactor:(NSString *)string withRegex:(NSString *)regexStr{
NSString *searchText = string;
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:&error];
NSString *result = [regex stringByReplacingMatchesInString:searchText options:NSMatchingReportCompletion range:NSMakeRange(0, searchText.length) withTemplate:@""];
return result;
}
4,移除监听:
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
5,Over;
解决方案:添加监听,在监听中,过滤字符;
上干货:
1,声明变量:
@property (nonatomic, strong) UITextField *textField;
2,添加监听:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
name:UITextFieldTextDidChangeNotification object:self.textField];
3,在监听中,过滤非中文字符,并且限制中文字符长度;
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
//过滤非汉字字符
textField.text = [self filterCharactor:textField.text withRegex:@"[^\u4e00-\u9fa5]"];
if (textField.text.length >= 4) {
textField.text = [textField.text substringToIndex:4];
}
return NO;
}
- (void)textFiledEditChanged:(id)notification{
UITextRange *selectedRange = self.textField.markedTextRange;
UITextPosition *position = [self.textField positionFromPosition:selectedRange.start offset:0];
if (!position) { //// 没有高亮选择的字
//过滤非汉字字符
self.textField.text = [self filterCharactor:self.textField.text withRegex:@"[^\u4e00-\u9fa5]"];
if (self.textField.text.length >= 4) {
self.textField.text = [self.textField.text substringToIndex:4];
}
}else { //有高亮文字
//do nothing
}
}
//根据正则,过滤特殊字符
- (NSString *)filterCharactor:(NSString *)string withRegex:(NSString *)regexStr{
NSString *searchText = string;
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:&error];
NSString *result = [regex stringByReplacingMatchesInString:searchText options:NSMatchingReportCompletion range:NSMakeRange(0, searchText.length) withTemplate:@""];
return result;
}
4,移除监听:
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
5,Over;
相关文章推荐
- ios--uitextfield动态限制输入的字数(解决方案) 汉字和英文状态区别 判断当前输入法是否是中文
- iOS开发陷阱之UITextField中文输入长度的限制
- iOS UITextField、UITextView只限输入中文、英文、数字及实时限制字符个数封装实现
- [iOS] UITextField如何准确限制中文输入文本长度
- iOS开发之UITextField(输入框)限制只能输入整数和小数
- IOS:UITextField输入中文时限制长度
- iOS UITextField、UITextView只限输入中文、英文、数字及实时限制字符个数的封装实现代码
- iOS UITextField 数字输入限制 只能输入数字和小数点,只能有两位小数
- iOS开发陷阱之UITextField中文输入长度的限制
- iOS 除去两边空格与UITextField限制输入内容
- IOS开发问题解决之限制UITextField输入特定位数小数时,Done按钮失效
- 使用正则限制input框只能输入数字/英文/中文等等
- IOS-如何干掉UITextField的长按手势菜单与输入内容限制
- IOS开发限制UITextField只可以输入数字
- 一个限制只能输入中文的js代码
- 使用正则限制input框只能输入数字/英文/中文等等
- ios--uitextfield动态限制输入的字数(解决方案)
- UITextField 限制只能输入数字
- 实现textarea限制输入字数(包含中文只能输入10个,全ASCII码能够输入20个)
- IOS开发问题解决之限制UITextField输入特定位数小数时,Done按钮失效