UITextField限制字元數字長度
阿新 • • 發佈:2018-11-02
本章節主要介紹下,如果利用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,希望可以幫助到更多的初學者,一起學習一起努力,如有疑問之處,可以留言,諒解!謝謝您的閱讀。若覺得非常的棒,別忘了點贊!~