本章节主要介绍下,如果利用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,希望可以帮助到更多的初学者,一起学习一起努力,如有疑问之处,可以留言,谅解!谢谢您的阅读。若觉得非常的棒,别忘了点赞!~