UITextField

1 UITextField的基本属性 

1.UITextField的文本相关属性
// 获取文本框中的文字
@property(nullable, nonatomic, copy) NSString *text;
// 占位符
@property(nullable, nonatomic, copy) NSString *palceholder;
// 字体颜色
@property(nullable, nonatomic, strong) UIColor *textColor;
// 字体大小
@property(nullable, nonatomic, strong) UIFont* font;
// 文本对齐方式
@property(nullable) NSTextAlignment textAlignment;
2.UITextField的外观属性
// 2.UITextField的背景颜色
@property(nullable, nonatomic, copy) UIColor *backgroundColor;
// UITextField的边框样式。borderStyle有4种常见的样式,分别为:无边框UITextBorderStyleNone、线形边框UITextBorderStyleLine、带阴影效果的边框UITextBorderStyleBezel以及圆角边框UITextBorderStyleRoundedRect
@property(nonatomic) UITextBorderStyle borderStyle;
3.其他属性
// 设置输入文本时弹出的键盘类型(默认键盘、数字键盘、数字+符号键盘等)
@property(nonatomic) UIKeyvoardType keyboardType;
// 键盘弹出后的键盘返回键类型
@property(nonatomic) UIReturnKeyType returnKeyType;
// 设置输入框输入的字母是否大写。
@property(nonatomic) UITextAutocapitalizationType autocapitalizationType;
// 当开始编辑时,是否删除textField里面的所有字符串。
@property(nonatomic) BOOL clearsOnBeginEditing;
4.UITextField的创建
-(void)viewDidLoad {
    [super viewDidLoad];
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 250, 50)];
    textField.backgroundColor = [UIColor shiteColor];
    textField.placeholder = @"请输入";
    textField.textAlignment = NSTextAlignmentCenter;
    textField.borderStyle = UITextBorderStyleRoundedRect;
    textField.clearsOnBeginEditing = YES;
    textField.keyboardType = UIKeyboardTypeDefault;
    textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
    textField.returnKetType = UIReturnKeyDone;
    textField.clearsOnInsertion = YES;
    [self.view addSubview:textField];
}

2 UITextField的代理方法简介

1.UITextField代理方法介绍
// 当开始输入时调用。即当这个UITextField对象成为第一响应者的时候调用。
-(void)textFieldDidBeginEditing:(UITextField *)textField;
// 编辑结束时调用。
-(void)textFieldDidEndEditing:(UITextField *)textField;
-(void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason NS_AVALIABLE_IOS(10_0);
// 是否允许编辑,当返回值是NO时,此时UITextField对象不能输入任何内容。
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
// 是否允许编辑结束,并且放弃第一响应者状态。
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField;
// 是否响应清除按钮。
-(BOOL)textFieldShouldClear:(UITextField *)textField;
// 是否响应键盘上的返回按钮。
-(BOOL)textFieldShouldReturn:(UITextField *)textField;
-(void)viewDidLoad {
    [super viewDidLoad];
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 250, 50)];
    // ...
    textField.delegate= self;
    [self.view addSubview:textField];
}
// 设置控制器类遵守UITextFieldDelegate协议。
@interface ViewController ()<UITextFiledDelegate>
@end
// 实现代理协议
-(void)textFieldDidBeginEditing:(UITextField *)textField {
    
}

3 UITextField的代理方法实例之键盘回收

在实际的开发过程中,以下情形需要考虑回收键盘:
用户完成了输入,点击了键盘中的完成按钮、返回按钮或继续按钮等。
用户点击了屏幕的任意位置,此时有可能是用户希望进行其他的操作,也需要隐藏键盘。
当需要进行键盘回收时,可以使用以下两种方法。这两种方法的本质是相同的,都是释放视图对象的第一响应者。
// 调用UIResponder类的resignFirstResponder方法。
-(BOOL)resignFirstResponder;
// 调用UITextField类的endEditing:方法,该方法本质上是对UIResponder类的resignFirstResponder:进行了封装。
-(BOOL)endEditing:(BOOL)force;

// 当用户点击键盘的完成键时,调用endEditing:方法实现键盘回收。
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField endEditing:YES];
    return YES;
}
// 当用户点击屏幕任意位置时,会调用touchesBegan:withEvent:方法,在该方法中也添加释放键盘的操作。
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEcent *)event {
    [self.textField resignFirstResponder];
}

4 UITextField的代理方法实例之字数限制

在UITextFieldDelegate代理协议中,定义了textField:shouldChangeCharactersInRange:replacementString:方法,
当用户在一个UITextField对象中输入内容时,该方法会被持续调用,即每次输入都会调用该方法。
通过该代理协议,可以监控用户的输入过程,并且对于用户的输入内容进行控制。
该方法中提供了两个参数,其中range可以获取当前输入内容的长度,string可以获取输入的内容。
-(BOOL)textField:(UITextField *)textField shouldChangeCharadtersInRange:(NSRange) range replacementString:(NSString *) string;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值