美文网首页
UITextFiled输入的字母大写和字数限制

UITextFiled输入的字母大写和字数限制

作者: itonny | 来源:发表于2016-12-15 17:01 被阅读16次

    1.只让输入的字母变大写

    • 方法一
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        _plateTextField = [[UITextField alloc] init];
        _plateTextField.delegate = self;
        [_plateTextField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
    }
    
    - (void)textFieldChanged:(UITextField *)textField{
        textField.text = [textField.text uppercaseString];
    }
    
    • 方法二
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        _plateTextField = [[UITextField alloc] init];
        _plateTextField.delegate = self;
    }
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        
        if ([self isBlankString:string]) {
            return YES;
        }
        char commitChar = [string characterAtIndex:0];
        if (commitChar > 96 && commitChar < 123) {
         //小写变成大写
        NSString * uppercaseString = string.uppercaseString;
        NSString * str1 = [textField.text substringToIndex:range.location];
        NSString * str2 = [textField.text substringFromIndex:range.location];
        textField.text = [NSString stringWithFormat:@"%@%@%@",str1,uppercaseString,str2];
        
            return NO;
        }
    }
    
    // 判断字符串是否为空
    - (BOOL) isBlankString:(NSString *)string {
        if (string == nil || string == NULL) {
            return YES;
        }
        if ([string isKindOfClass:[NSNull class]]) {
            return YES;
        }
        if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
            return YES;
        }
        return NO;
    }
    
    

    2.限制只能输入字母 + 输入后自动变大写 + 限制输入字母个数

    #define kAlphaNum @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        _plateTextField = [[UITextField alloc] init];
        _plateTextField.delegate = self;
        [_plateTextField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
    }
    
    - (void)textFieldChanged:(UITextField *)textField{
        textField.text = [textField.text uppercaseString];
    }
    
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        
        NSUInteger proposedNewLength = textField.text.length - range.length + string.length;
        /* 你想限制输入的字母个数 */
        NSInteger textLength = 5;
        
        if ([textField isEqual:self.plateTextField]) {
            NSCharacterSet *cs;
            cs = [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum] invertedSet];
            NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; 
            BOOL canChange = [string isEqualToString:filtered];
            
            return proposedNewLength>textLength ? NO: canChange;
        }
        return YES;
    }
    

    相关文章

      网友评论

          本文标题:UITextFiled输入的字母大写和字数限制

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