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
上一篇下一篇

猜你喜欢

热点阅读