美文网首页
UITextField 限制输入类型

UITextField 限制输入类型

作者: 寂寞先森666 | 来源:发表于2019-07-31 18:14 被阅读0次

    第一、写个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
    

    相关文章

      网友评论

          本文标题:UITextField 限制输入类型

          本文链接:https://www.haomeiwen.com/subject/rjztdctx.html