iOS之UITextField對輸入的內容的長度限制和內容限制
阿新 • • 發佈:2019-02-03
這裡講解兩個對文字框輸入內容的長度的限制:
首先是通過新增事件的方式來限制:
- (void)viewDidLoad { [super viewDidLoad]; //建立文字框 UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 50)]; //文字框的邊框的樣式 textField.borderStyle = UITextBorderStyleRoundedRect; //為文字框新增事件(因為UITextField是繼承於UIControl的) [textField addTarget:self action:@selector(limit:) forControlEvents:UIControlEventEditingChanged]; //新增到當前檢視 [self.view addSubview:textField]; } //限制文字框的輸入內容和文字的長度 - (void)limit:(UITextField *)textField{ //限制文字的輸入長度不得大於10個字元長度 if (textField.text.length >= 10){ //擷取文字字元長度為10的內容 textField.text = [textField.text substringToIndex:10]; } }
其次是通過UITextField的代理方法來進行限制的,並在此方法中進行輸入內容的限制:
<span style="color:#ff0000;">//設定只允許輸入123和qwe(區分大小寫)</span> #define textFieldContent @"123qwe" @interface ViewController ()<UITextFieldDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //建立文字框 UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 50)]; //文字框的邊框的樣式 textField.borderStyle = UITextBorderStyleRoundedRect; //設定當前控制器為文字框的代理 textField.delegate = self; //新增到當前檢視 [self.view addSubview:textField]; } #pragma mark - UITextFieldDelegate - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ //先設定只能輸入的集合 invertedSet就是將咱們允許輸入的字串的字元找出 NSCharacterSet *canInputSet = [[NSCharacterSet characterSetWithCharactersInString:textFieldContent] invertedSet]; //把允許輸入的內容轉化成陣列,再轉化成字串 NSString *str = [[string componentsSeparatedByCharactersInSet:canInputSet] componentsJoinedByString:@""]; //判斷輸入的字元是否包含在允許輸入的字元之內 BOOL isSuccess = [string isEqualToString:str]; <span style="color:#ff0000;">//限制文字框輸入內容的長度不得超過10且有輸入內容的限制</span> if (textField.text.length <= 10 && isSuccess){ //返回值為YES的時候,文字框可以進行編輯 return YES; }else{ //當返回NO的時候,文字框內的內容不會在再改變,甚至不能進行刪除 return NO; } }