</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开发之路上进步与成长。