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];
- }