1. 程式人生 > >UITextField限制字元數字長度

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,希望可以幫助到更多的初學者,一起學習一起努力,如有疑問之處,可以留言,諒解!謝謝您的閱讀。若覺得非常的棒,別忘了點贊!~