UITextField是输入字符的视图控件
1 是UIView的子类,具有与view一样的属性
2 字符输入只能是单行输入,不能换行,也不能多行输入
3 与自己特有的属性
4 textfield通常要设置其代理,并实现相应的代理方法
5 主要使用场景,如:登录页面中输入帐号密码,或输入手机号,或输入昵称等方面
6 使用注意事项:
(1)输入键盘的显示,以及隐藏;
(2)输入时避免输入框被键盘遮挡;
// 实例化
UITextField *textfield001 = [[UITextField alloc] initWithFrame:CGRectMake(10.0, 50.0, 200.0, 30.0)];
// 添加到父视图
[self.view addSubview:textfield001];
// 设置背景颜色
textfield001.backgroundColor = [UIColor redColor];
// 设置边框属性
textfield001.layer.cornerRadius = 10.0;
textfield001.layer.masksToBounds = YES;
textfield001.layer.borderColor = [UIColor yellowColor].CGColor;
textfield001.layer.borderWidth = 1.0;
// 字体设置
// 占位符,即提示信息
textfield001.placeholder = @"我是单行字符输入框";
// 字体颜色
textfield001.textColor = [UIColor yellowColor];
// 字体对方方式
textfield001.textAlignment = NSTextAlignmentRight;
// 光鼠标颜色
textfield001.tintColor = [UIColor greenColor];
// 字体大小
textfield001.font = [UIFont systemFontOfSize:10.0];
// 其他属性
// 左间距视图及模式
UIImageView *leftImage = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 30.0, 30.0)];
leftImage.contentMode = UIViewContentModeScaleAspectFit;
leftImage.image = [UIImage imageNamed:@"leftImage"];
textfield001.leftView = leftImage;
textfield001.leftViewMode = UITextFieldViewModeAlways;
// 右间距视图及模式,若再设置清除按钮,则清除按钮是无效的,即两者不能同时设置
// UIImageView *rightImage = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 30.0, 30.0)];
// rightImage.contentMode = UIViewContentModeScaleAspectFit;
// rightImage.image = [UIImage imageNamed:@"rightImage"];
// textfield001.rightView = rightImage;
// textfield001.rightViewMode = UITextFieldViewModeAlways;
// 清除按钮,如果设置了右间距视图,则无效,即两者不能同时设置
textfield001.clearButtonMode = UITextFieldViewModeWhileEditing;
// 键盘类型
textfield001.keyboardType = UIKeyboardTypeDefault;
// 键盘中回车键类型
textfield001.returnKeyType = UIReturnKeySend;
// 键盘中回车键有输入时,回车键才可点击,默认是可点击,即NO
textfield001.enablesReturnKeyAutomatically = NO;
// 输入框字符明文,或密文方式,默认是明文,即NO
textfield001.secureTextEntry = NO;
// 设置代理
/*
1 代理通常设置其他需要实现textfile代理方法的对象
2 要设置协议
3 实现协议方法
*/
textfield001.delegate = self;
@interface ViewController () <UITextFieldDelegate>
@end
// 输入源视图,默认是键盘,可通过设置输入源视图是其他控件,或自定义控件
// textfield001.inputView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 300.0)];
// 输入源视图中的顶端视图,默认是没有的
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.3];
button.frame = CGRectMake(0.0, 0.0, CGRectGetWidth(self.view.bounds), 40.0);
[button setTitle:@"隐藏键盘" forState:UIControlStateNormal];
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(hiddenKeyboard) forControlEvents:UIControlEventTouchUpInside];
textfield001.inputAccessoryView = button;
// UITextFieldDelegate
// 即将开始编辑
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
NSLog(@"即将开始编辑");
return YES;
}
// 已经开始编辑
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"已经开始编辑");
}
// 即将结束编辑
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
NSLog(@"即将结束编辑");
return YES;
}
// 已经结束编辑
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSLog(@"已经结束编辑");
}
// 正在编辑
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSLog(@"正在编辑 = %@", textField.text);
/*
1 常用来获取当前输入的信息
2 用来判断当前的输入是否限制的字符,如限制只能输入大小写字母,或只能输入数字等
3 用来判断输入的字符长度限制
*/
return YES;
}
// 应该清除
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
NSLog(@"点击了清除键");
return YES;
}
// 应该回车
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSLog(@"点击了回车键");
// 隐藏键盘
// 方法1 失去第一响应
// [textField resignFirstResponder];
// 方法2 结束编辑
[textField endEditing:YES];
return YES;
}
- (void)hiddenKeyboard
{
// 当前视图结束编辑
[self.view endEditing:YES];
}