UITextField 限制输入类型
2019-07-31 本文已影响0人
寂寞先森666
第一、写个NSString 的 category
@interface NSString (extension)
-(NSString *)stringWithRegex:(NSString *)regex;
@end
#import "NSString+extension.h"
@implementation NSString (extension)
-(NSString *)stringWithRegex:(NSString *)regex
{
NSRegularExpression * regularExpression = [NSRegularExpression regularExpressionWithPattern:regex options:0 error:nil];
NSString * newString = [regularExpression stringByReplacingMatchesInString:self options:NSMatchingReportCompletion range:NSMakeRange(0, self.length) withTemplate:@""];
return newString;
}
@end
第二步、在viewController
#import "ViewController.h"
#import "NSString+extension.h"
@interface ViewController ()
@property(strong,nonatomic)UITextField * textField;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 200, 50)];
self.textField.placeholder = @"请输入单位地址";
[self.view addSubview:self.textField];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:) name:UITextFieldTextDidChangeNotification object:self.textField];
}
-(void)textFiledEditChanged:(NSNotification *)noti
{
UITextField * textField = noti.object;
if (textField == self.textField) {
UITextPosition * position = [textField positionFromPosition:textField.markedTextRange.start offset:0];
//没后高亮(只过滤没有高亮的状态)
if (!position) {
// 中文:\u4e00-\u9fa5
// 英文字符:a-zA-Z
// 数字:0-9
// 使用方法 @"[^xxxxxxxxxx]"
//******类型限制*******
textField.text = [textField.text stringWithRegex:@"[^\u4e00-\u9fa5 a-zA-Z _]"];//中文、大小写、_
//******长度限制*******
if (textField.text.length > 15) {
textField.text = [textField.text substringToIndex:15];
}
}
}
}
@end