iOS App开发中UITextField组件的常用属性小结
重点属性
在Xcode中使用IB给视图拖上去一个文本框后,选中文本框,可以在AttributeInspector中设置其各种属性。
AttributeInspector分为三部分,分别是TextField、Control和View部分。我们重点看看TextField部分。
TextField部分有以下选项:
1、Text:设置文本框的默认文本。
2、Placeholder:可以在文本框中显示灰色的字,用于提示用户应该在这个文本框输入什么内容。当这个文本框中输入了数据时,用于提示的灰色的字将会自动消失。
3、Background:
4、Disabled:若选中此项,用户将不能更改文本框内容。
5、接下来是三个按钮,用来设置对齐方式。
6、BorderStyle:选择边界风格。
7、ClearButton:这是一个下拉菜单,你可以选择清除按钮什么时候出现,所谓清除按钮就是出一个现在文本框右边的小X,你可以有以下选择:
7.1Neverappears:从不出现
7.2Appearswhileediting:编辑时出现
7.3Appearsunlessediting:
7.4Isalwaysvisible:总是可见
8、Clearwheneditingbegins:若选中此项,则当开始编辑这个文本框时,文本框中之前的内容会被清除掉。比如,你现在这个文本框A中输入了"What",之后去编辑文本框B,若再回来编辑文本框A,则其中的"What"会被立即清除。
9、TextColor:设置文本框中文本的颜色。
10、Font:设置文本的字体与字号。
11、MinFontSize:设置文本框可以显示的最小字体(不过我感觉没什么用)
12、AdjustToFit:指定当文本框尺寸减小时,文本框中的文本是否也要缩小。选择它,可以使得全部文本都可见,即使文本很长。但是这个选项要跟MinFontSize配合使用,文本再缩小,也不会小于设定的MinFontSize。
接下来的部分用于设置键盘如何显示。
13、Captitalization:设置大写。下拉菜单中有四个选项:
13.1None:不设置大写
13.2Words:每个单词首字母大写,这里的单词指的是以空格分开的字符串
13.3Sentances:每个句子的第一个字母大写,这里的句子是以句号加空格分开的字符串
13.4AllCharacters:所以字母大写
14、Correction:检查拼写,默认是YES。
15、Keyboard:选择键盘类型,比如全数字、字母和数字等。
16、Appearance:
17、ReturnKey:选择返回键,可以选择Search、Return、Done等。
18、Auto-enableReturnKey:如选择此项,则只有至少在文本框输入一个字符后键盘的返回键才有效。
19、Secure:当你的文本框用作密码输入框时,可以选择这个选项,此时,字符显示为星号。
技巧
下面来说两个小技巧:
一、UITextField隐藏键盘
1.点击键盘的return来隐藏键盘
这个方法需要在相应的.h文件文件中实现UITextFieldDelegate协议。并在.m文件中添加如下方法
-(BOOL)textFieldShouldReturn:(UITextField*)textField { [textFieldresignFirstResponder]; returnYES; }
2.点击界面空白处来隐藏键盘
这个方法的实现主要是给当前的view增加点击事件,并未点击事件增加相应的处理方法,此处是为了隐藏键盘,所以我们可以在点击事件对应的方法中让UITextField放弃第一响应者。
-(void)dismissKeyboard { NSArray*subViews=[self.viewsubviews]; for(idinputTextinsubViews){ if([inputTextisKindOfClass:[UITextFieldclass]]){ if([inputTextisFirstResponder]){ [inputTextresignFirstResponder]; } } } }
为当前的view增加点击事件
UITapGestureRecognizer*dismissKeyboardTap=[[UITapGestureRecognizeralloc] initWithTarget:self action:@selector(dismissKeyboard)]; [self.viewaddGestureRecognizer:dismissKeyboardTap];
二、为内容增加校验
-(BOOL)textFieldShouldEndEditing:(UITextField*)textField { switch(textField.tag){ case100://name { NSLog(@"thisisnameField"); //添加校验name的代码 break; } case101://phone { NSLog(@"thisisphoneField"); //添加校验phone的代码 break; } case102://email { NSLog(@"thisisemailField"); //添加校验email的代码 break; } default: break; } returnYES; }