</pre><pre name="code" class="objc">#import "ViewController.h" //签订代理协议 @interface ViewController ()<UITextFieldDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //须知:UITextField继承于UIcontrol,而UITextView继承于UIScrollView,UIScrollView又继承于UIView //创建输入框 UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 50, 280, 100)]; //设置输入框的边框样式 textField.borderStyle = UITextBorderStyleRoundedRect; //设置当前对象为输入框的代理 textField.delegate = self; //右侧的删除按钮 textField.clearButtonMode = UITextFieldViewModeAlways; //添加到当前视图 [self.view addSubview:textField]; //因为UITextField继承于UIcontrol,所以可以进行如下操作,此操作可以用于控制输入框内的文本的长度和输入限制 [textField addTarget:self action:@selector(pick) forControlEvents:UIControlEventEditingChanged]; } - (void)pick{ NSLog(@"文本内容改变了"); } #pragma mark - UITextFieldDelegate //是否允许输入框可以进行编辑 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ //返回YES表示可以进行编辑,返回NO表示不可以 return YES; } //became first responder (成为第一响应者,显示键盘) - (void)textFieldDidBeginEditing:(UITextField *)textField{ //一旦进行编辑变回响应的方法 } //返回YES表示允许停止编辑并收起键盘,返回NO则表示不允许停止编辑 - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ return YES; } - (void)textFieldDidEndEditing:(UITextField *)textField{ //一旦结束编辑响应的方法 } //此方法在内容改变的时候调用,限制输入框的内的文本的长度 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ // //限制输入框的内的文本的长度,当长度大于等于10的时候,文本长度不会增加,也不能进行删除操作 if (textField.text.length >= 10){ return NO; }else{ return YES; } } //当删除按钮存在的情况下,用此方法控制按钮是否有效,默认是可以进行删除的 - (BOOL)textFieldShouldClear:(UITextField *)textField{ return NO; } //点击return键的响应事件 - (BOOL)textFieldShouldReturn:(UITextField *)textField{ //注销第一响应者,收起键盘 [textField resignFirstResponder]; return YES; } @end
开发中,UITextField的使用频率还是比较高的,例如一般的帐号登录等都用到的是UITextField,一般的程序都会存在对输入的内容和长度的限制的需求,这需要我们在熟知UITextField的相关属性和各种代理事件的前提下进行操作。
欢迎加入 qq群名称:iOS小圈子
群号码:177204933;一同在iOS开发之路上进步与成长。
时间: 2024-10-07 10:08:00