您的位置:首页 > 产品设计 > UI/UE

认识UITextField

2016-06-19 20:43 330 查看
UITextField 是一个用来处理文本输入和现实的控件,在我们的开发当中也是经常被用到。下面我们一起来学习UITextField吧!!!

基本属性

对象创建以及文本的显示
UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(50, 300, 200, 50)];
[self.view addSubView:textField];
//设置显示文本
textField.text = @"点击试试";
//设置文本颜色
textField.textColor = [UIColor redColor];
//设置文本对齐方式
textField.textAlignment = NSTextAlignmentRight;
//设置字体
textField.font = [UIFont fontWithName:@"wawati sc" size:20];

其他属性

设置TextField的边框

textField.borderStyle = UITextBorderStyleRoundedRect;
borderStyle
是一个枚举类型的属性, 默认是:
UITextBorderStyleNone
, 该枚举的所有成员如下:无边框
`UITextBorderStyleNone`
直线边框
`UITextBorderStyleLine`
凹边框
`UITextBorderStyleBezel`
圆角边框
`UITextBorderStyleRoundedRect`
对于以上几种边框样式最好去一一试试,看看效果

设置TextField的占位字符

textField.placeholder = @"看看";

设置TextField的占位字符

在App中有很多情况需要让编辑框不能编辑,我们通过设置enabled来控件可不可以编辑
textField.enabled = YES;

设置TextField的编辑状态

在App中有很多情况需要让编辑框不能编辑,我们通过设置enabled来控件可不可以编辑
textField.enabled = YES;

设置编辑框中删除按钮的出现模式

我们在使用App时经常会看到当我们的编辑框中有文本的时候,边上会很出现一个删除的图标,当我们不需要框中的内容的时候直接点击按钮就可以把整个框中的内容删掉;在iOS中这个按钮是系统自带的,我们来设置下他的出现模式
textField.clearButtonMode = UITextFieldViewModeAlways;
clearButtonMode
是一个枚举类型的属性,默认是:
UITextFieldViewModeNever
, 该类型的所有成员如下:没有删除按钮
UITextFieldViewModeNever
当编辑的时候出现删除按钮
UITextFieldViewModeWhileEditing
当不编辑的时候出现删除按钮
UITextFieldViewModeUnlessEditing
总是出现
UITextFieldViewModeAlways

设置开始编辑时是否删除原有内容

有时候我们需要再次编辑时删除框中原有内容,如果每次都手动的删除原有内容特别麻烦,我们可以进行如下设置:
textField.clearsOnBeginEditing = YES;
设置为YES后,当再次点击编辑框时,会将上次的内容清空

设置编辑框中的内容密码显示

textField.secureTextEntry = YES;

设置键盘样式

1.UIKeyboardTypeDefault  默认键盘2.UIKeyboardTypeASCIICapable  显示ASCII码值得键盘3.UIKeyboardTypeNumbersAndPunctuation 显示数字和标点符号得键盘4.UIKeyboardTypeURL  显示带有 . / .com URL常用得符号得键盘5.UIKeyboardTypeNumberPad 显示0到9得数字键盘 不支持自动大写6.UIKeyboardTypePhonePad     显示带有0到9和“*”,“#”得键盘 不支持自动大写7.UIKeyboardTypeNamePhonePad 显示一个支持输入一个联系人名字或者号码得键盘 不支持自动大写8.UIKeyboardTypeEmailAddress 显示一个支持输入Email地址符号得键盘 “@”9.UIKeyboardTypeDecimalPad 显示0到9 和 “."得键盘10.UIKeyboardTypeAlphabet 显示一个字母键盘UITextInputTraits Protocol Reference这个是用来辅助键盘输入得协议,在需要用到键盘输入得地方都需要实现这个协议。UITextField和UITextView已经实现了这个协议。

设置键盘上return键的类型

textField.returnKeyType = UIReturnKeySearch;
1. UIReturnKeyDefault 设定键盘默认返回键为:“return”2. UIReturnKeyGo 设定键盘默认返回键为:“Go”3.UIReturnKeyGoogle 设定键盘默认返回键为:“Google”4.UIReturnKeyJoin 设定键盘默认返回键为:“Join”5. UIReturnKeyNext 设定为  “Next”6. UIReturnKeyRoute 设定为  “Route”7.UIReturnKeySearch 设定为  “Research”8.UIReturnKeySend 设定为 “Send”9.UIReturnKeyYahoo 设定为 “Yahoo”10.UIReturnKeyDone 设定为 “Done”11.UIReturnKeyEmergencyCall 设定为 “EmergencyCall” “紧急电话”以上样式,可以一一试试,只有查看了之后才能跟好的理解

自定义键盘辅助视图

在键盘的最上面有一个辅助视图,我们可以通过自定义这个辅助视图实现很多很灵活的功能,下面我举一个非常简单的例子:
//自定义键盘辅助视图
UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 80)];
subView.backgroundColor = [UIColor greenColor];
textField.inputAccessoryView = subView;
先创建一个视图,然后赋值给
inputAccessoryView
属性就可以了,这样键盘上的辅助视图就是我们创建的绿色View了

自定义键盘

为了安全着想,现在越来越多的项目中都使用了自定义的键盘;在iOS中键盘的自定义相对来说比较简单,因为系统给我们提供了接口,我们只要自己创建一个键盘视图,然后覆盖当前编辑框的键盘视图就可以:
//自定义键盘视图
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 100)];
redView.backgroundColor = [UIColor redColor];
textField.inputView = redView;

添加编辑框的左/右边视图

编辑框的设计非常的灵活, 我们自己可以在编辑框的左边再添加一个自定义的视图;先设置左视图出现的模式
textField.leftViewMode = UITextFieldViewModeAlways;
leftViewMode
这也是一个枚举类型的属性,他的成员我就不一一列举了,大家可以自己去头文件中查看,他的枚举成员的大概和删除按钮出现的的意思一样设置左边要出现的视图
//添加左视图
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
leftView.backgroundColor = [UIColor grayColor];
textField.leftView = leftView;
textField_leftView上面是添加左视图,其实添加右视图是一样的原理,只是设置的是右边两个相关的属性(
rightViewMode
rightView
)

编辑框的代理方法

既然编辑框是一个处理文本的控件,那免不了我们要和用户进行打交道;例如我们要在用户开始输入的、正在输入或者输入结束等等情况下进行一些特殊的处理;那么这些处理的话,编辑框本身并不知道我们具体要做什么处理,所以我们可以作编辑框的代理,让我们自己来做处理;

设置编辑框的代理

先遵守编辑框代理协议(
UITextFieldDelegate
),然后设置代理
textField.delegate = self;

实现代理方法

具体代理方法如下:
// textField delegate
// return button Action
-(BOOL)textFieldShouldReturn:(UITextField )textField
{
//textField:调用次方法的textField
NSLog(@"点击return 按钮时会执行的方法");
[textField resignFirstResponder];   //回收键盘
return YES;
}
// Had Begin Editing Action
-(void)textFieldDidBeginEditing:(UITextField )textField
{
NSLog(@"已经开始编辑文本框时执行的方法%@", textField.text);
}
// Had End Editing Action
-(void)textFieldDidEndEditing:(UITextField )textField
{
NSLog(@"已经结束编辑时执行的方法%@", textField.text);
}
// will begin Editing Action
-(BOOL)textFieldShouldBeginEditing:(UITextField )textField
{
NSLog(@"将要开始编辑时执行的方法%@", textField.text);
//系统是否响应这个动作
return YES;
}
// Will End Editing Action
-(BOOL)textFieldShouldEndEditing:(UITextField )textField
{
NSLog(@"将要结束编辑时执行的方法%@", textField.text);
return YES;
}
// Will Text Change Action
-(BOOL)textField:(UITextField )textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString )string
{
NSLog(@"将要被改变的范围:%ld, %ld", (long)range.location, (long)range.length);
NSLog(@"将要改变的文本:%@", string);
NSLog(@"%@", textField.text);
return YES;
}
// clear button Action
-(BOOL)textFieldShouldClear:(UITextField )textField
{
NSLog(@"将被清空时执行的方法%@", textField.text);
return YES;
}
 UIImageView* myView = [[ UIImageView alloc]initWithImage:[UIImage imageNamed:@"face.png"]];  UIImageView *myView2 = [[ UIImageView alloc]initWithImage:[UIImage imageNamed:@"face.png"]];  UITextField*myTextField=[[UITextField alloc]initWithFrame:CGRectMake(40, 40,240, 60)]; //初始化一个UITextField的frame  myTextField.textColor=[UIColor redColor]; //UITextField的文字颜色  myTextField.delegate=self;//UITextField代理方法设置  myTextField.placeholder=@"输入密码";//UITextField的初始隐藏文字,当然这个文字的字体大小颜色都可以改,重写uitextfield,下次介绍  myTextField.textAlignment=UITextAlignmentCenter;//UITextField的文字对齐格式  myTextField.font=[UIFontfontWithName:@"Times New Roman" size:30];//UITextField的文字大小和字体  myTextField.adjustsFontSizeToFitWidth=YES;//UITextField的文字自适应  myTextField.clearsOnBeginEditing=NO;//UITextField的是否出现一件清除按钮  myTextField.borderStyle=UITextBorderStyleNone;//UITextField的边框  myTextField.background=[UIImageimageNamed:@"my.png"];//UITextField的背景,注意只有UITextBorderStyleNone的时候改属性有效  myTextField.clearButtonMode=UITextFieldViewModeNever;//UITextField的一件清除按钮是否出现  myTextField.leftView=myView;//UITextField的左边view  myTextField.leftViewMode=UITextFieldViewModeAlways;//UITextField的左边view出现模式  myTextField.rightView=myView2;//UITextField的有边view  myTextField.rightViewMode=UITextFieldViewModeAlways;//UITextField的右边view出现模式  myTextField.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter;//UITextField的字的摆设方式  [myViewrelease];  [myView2 release];  [self.viewaddSubview:myTextField]; 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios uitextfield