TextField在日常工程中使用广泛,基本上每个App都会用到,但对于初学者来说,定制起来可能会走很多弯路。例如基础属性,相关情况下的键盘模式,或者是和键盘的相对位置等等。
我在日常使用中也走了不少弯路,最重要的是定制键盘样式和监听键盘高度等等,但是经过在网上收集一些资料和自己翻阅官方文档,最后还是找到了不少可行方法,以下是关于
TextField
的一些相关方法。我会另外再写一篇对于键盘的博客。
相关文章:
若干搭建UI常用的小控件(一)
若干搭建UI常用的小控件(二)
UITextField继承于UIControl,而UIControl继承于UIView,所以UITextField可以使用UIView的方法进行初始化。
创建TextField
UITextField * textField = [[UITextField alloc]initWithFrame:CGRectMake(60, 100,200, 40)];
TextFiled背景色
textField.backgroundColor = [UIColor whiteColor];
设置背景图片
textField.background = [UIImage imageNamed:@"xxx.PNG"];
设置边框样式
textField.borderStyle = UITextBorderStyleRoundedRect;//圆角矩形
UITextBorderStyleNone //没有边框
UITextBorderStyleLine //线状边框
UITextBorderStyleBezel //直角立体矩形(底座)
UITextBorderStyleRoundedRect //圆角矩形
关于文字
设置初始文字
textField.text = @"初始文字";
设置文字颜色
textField.textColor = [UIColor blueColor];
设置文字的对齐方式
textField.textAlignment = NSTextAlignmentLeft;
设置文字的垂直对齐方式
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;
设置文字的字体
textField.font = [UIFont systemFontOfSize:20];
设置占位符
textField.placeholder = @"占位符";
设置密文显示
textField.secureTextEntry = NO;
设置clearButton模式
textField.clearButtonMode = UITextFieldViewModeAlways;
UITextFieldViewModeNever //永不显示
UITextFieldViewModeWhileEditing //当编辑时
UITextFieldViewModeUnlessEditing //除了编辑时
UITextFieldViewModeAlways //永远显示
设置左右视图的显示模式
textField.leftViewMode = UITextFieldViewModeAlways;
textField.rightViewMode = UITextFieldViewModeAlways;
右视图设置后,会覆盖掉clearButton
设置文字自适应宽度
textField.adjustsFontSizeToFitWidth = YES;
设置最小字体
textField.minimumFontSize = 10;
自动纠错
textField.autocorrectionType = UITextAutocorrectionTypeNo;
判断textField是否处于编辑模式
BOOL ret = textField.isEditing;
设置进入编辑状态,立即清空文字
textField.clearsOnBeginEditing = YES;
代理方法
TextField的协议是UIApplicationDelegate
,至于怎么添加,大家都懂得。
协议方法众多,我这里只介绍几个大家可能常用的。
当textField将要开始被编辑,会委托代理调用这个方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField//返回YES允许编辑,返回NO不许编辑
当textField已经开始被编辑,会委托代理调用这个方法
- (void)textFieldDidBeginEditing:(UITextField *)textField
当textField将要结束被编辑,会委托代理调用这个方法
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField//返回YES允许结束,返回NO,不许结束
当textField已经结束被编辑,会委托代理调用这个方法
- (void)textFieldDidEndEditing:(UITextField *)textField
当keyBoard上return键被点击,委托代理调用这个方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField//返回值YES,NO没区别,似乎是系统会获得这个返回值
当textField中文字发生改变,调用这个方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string