UITextField限制字符数字长度

本章节主要介绍下,如果利用UITextField限制字符长度,因为这IOS开发之中,难免会遇到些文本输入框,然而需要限制客户需要字节的长度,因此这个常见的功能。如下所示:
一:导入代理

@interface SettingController ()<SettingViewDelegate,UITextFieldDelegate>

二:限制输入的数据信息

#define DEF_MAIL @"1234567890-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

三:实现代理方法

[self.setnameView.netNameTf addTarget:self action:@selector(fieldTextDidChange:) forControlEvents:UIControlEventEditingChanged];
 self.setnameView.netNameTf.delegate = self;

四:限制的方法


-(void)fieldTextDidChange:(UITextField *)textField{
    static int kMaxLength = 9;
    NSString *toBeString = textField.text;
    UITextRange *selectedRange = [textField markedTextRange];
    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
    if(!position){
        if (toBeString.length > kMaxLength) {
            // 截取子串
            textField.text = [toBeString substringToIndex:kMaxLength];
        }
    }
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (textField == self.setnameView.netNameTf) {
        //这里的if时候为了获取删除操作,如果没有次if会造成当达到字数限制后删除键也不能使用的后果.
        if (range.length == 1 && string.length == 0) {
            return YES;
        }
        //so easy
        else if (self.setnameView.netNameTf.text.length >=9) {
            self.setnameView.netNameTf.text = [textField.text substringToIndex:9];
            return NO;
        }
    }
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:DEF_MAIL]invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    BOOL basicTest = [string isEqualToString:filtered];
    if(!basicTest){
        return NO;
    }
    return YES;
}

五:确认,reture,Go隐藏键盘

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [self.routerView.netNameTf resignFirstResponder];
    [self.routerView.netPwdTf resignFirstResponder];
    [self.setnameView.netNameTf resignFirstResponder];
    [self.SeverAdderView.netNameTf resignFirstResponder];
    [self.SeverAdderView.netPwdTf resignFirstResponder];
    
    return YES;
    
}

六:点击空白处隐藏键盘

//点击空白处让键盘隐藏起来
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    [self.routerView.netNameTf resignFirstResponder];
    [self.routerView.netPwdTf resignFirstResponder];
    [self.setnameView.netNameTf resignFirstResponder];
    [self.SeverAdderView.netNameTf resignFirstResponder];
    [self.SeverAdderView.netPwdTf resignFirstResponder];
}

七:样式的定义

@property(strong,nonatomic) UITextField *netNameTf;
 self.netNameTf = [[UITextField alloc] init];
    self.netNameTf.textColor = [UIColor grayColor];
    self.netNameTf.placeholder = @"Please Input Name";
    self.netNameTf.keyboardType = UIKeyboardTypeWebSearch;
    [self.networkView addSubview:self.netNameTf];
    
    [self.netNameTf makeConstraints:^(MASConstraintMaker *make){
        make.top.equalTo(setLb).offset(30);
        make.left.equalTo(accountLb).offset(85);
        make.right.equalTo(self.networkView).offset(-10);
        make.height.equalTo(@54);
    }];

八:结束。
主要功能所示,以上亲测完全没问题,nice,希望可以帮助到更多的初学者,一起学习一起努力,如有疑问之处,可以留言,谅解!谢谢您的阅读。若觉得非常的棒,别忘了点赞!~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值