1、创建与设置
// 实例化 UITextField 对象
UITextField *textField = [[UITextField alloc] init];
// 设置位置尺寸
textField.frame = CGRectMake(20, 100, 200, 30);
// 将 textField 加到 window 上显示出来
[self addSubview:textField];
// 设置背景颜色:默认是透明的
textField.backgroundColor = [UIColor yellowColor];
// 设置背景图片
textField.background = [UIImage imageNamed:@"pic2"];
// 设置提示文字:用户输入时自动消失
textField.placeholder = @"请输入用户名";
// 设置输入的字体颜色
textField.textColor = [UIColor redColor];
// 设置文字对齐方式
textField.textAlignment = NSTextAlignmentLeft;
// 设置最小可缩小的字号
textField.minimumFontSize = 10;
// 自动调整文字大小:自动调整文字的大小以适应 textField 的宽度
textField.adjustsFontSizeToFitWidth = YES;
// 设置密文输入模式: default is NO
textField.secureTextEntry = YES;
// 设置显示清除按钮
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
// 设置键盘样式
textField.keyboardType = UIKeyboardTypeDefault;
// 设置返回键样式
textField.returnKeyType = UIReturnKeyJoin;
// 设置输入的字母大小写模式
textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
// 设置边框样式
/*
UITextBorderStyleNone, 无边框,默认
UITextBorderStyleLine, 直线边框
UITextBorderStyleBezel, 边框 + 阴影
UITextBorderStyleRoundedRect 圆角矩形边框
*/
textField.borderStyle = UITextBorderStyleLine;
// 设置左右视图显示模式: 不设置模式,左右视图显示不出来
textField.leftViewMode = UITextFieldViewModeAlways;
textField.rightViewMode = UITextFieldViewModeAlways;
// 设置左右视图
textField.leftView = label1;
textField.rightView = label2;
// 让 textField 获取第一响应:打开应用程序或界面时直接弹出键盘
[textField becomeFirstResponder];
// 让 textField 放弃第一响应:收起键盘
[textField resignFirstResponder];
// 设置 textField 的代理,需遵守协议 <UITextFieldDelegate>
textField.delegate = self;
2、变化观察
-
2.1 代理观察
- 协议方法,需遵守协议 UITextFieldDelegate,并设置代理
// 将要开始编辑,编辑开始前被调用
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return YES;
}
// 已经开始编辑,编辑开始后被调用,可监听键盘的弹出
- (void)textFieldDidBeginEditing:(UITextField *)textField {
}
// 将要结束编辑,编辑结束前被调用
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
return YES;
}
// 已经结束编辑,编辑结束后被调用,可监听键盘的回收
- (void)textFieldDidEndEditing:(UITextField *)textField {
// 输出 textfield 中输入的内容
NSLog(@"您输入的内容为:%@", textField.text);
}
// 是否允许文本修改,文本修改前被调用
/*
NO 不允许输入,YES 允许输入(默认)
range:光标范围
string:当前输入的内容
*/
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
return YES;
}
// 返回,键盘上的 return 键触摸后调用
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
return YES;
}
// 清空,文本输入框中清除按钮被触摸时调用
- (BOOL)textFieldShouldClear:(UITextField *)textField {
return YES;
}
-
2.2 直接监听
// 直接添加监听方法
[textField1 addTarget:self action:@selector(textField1TextChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textField1TextChange:(UITextField *)textField {
NSLog(@"textField1 - 输入框内容改变,当前内容为: %@",textField.text);
}
// 添加监听方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textField2TextChange:) name:UITextFieldTextDidChangeNotification object:self.textField2];
- (void)textField2TextChange:(NSNotification *)noti {
UITextField *currentTextField = (UITextField *)noti.object;
NSLog(@"textField2 - 输入框内容改变,当前内容为: %@",currentTextField.text);
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
3、textField 的常见需求