认识UITextField

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.UIKeyboardTypeASCIICapab le   显示ASCII码值得键盘

3.UIKeyboardTypeNumbersAnd Punctuation  显示数字和标点符号得键盘

4.UIKeyboardTypeURL   显示带有 .  / .com URL常用得符号得键盘

5.UIKeyboardTypeNumberPad 显示0到9得数字键盘  不支持自动大写

6.UIKeyboardTypePhonePad        显示带有0到9和“*”,“#”得键盘  不支持自动大写

7.UIKeyboardTypeNamePhoneP ad 显示一个支持输入一个联系人名字或者号码得键盘  不支持自动大写

8.UIKeyboardTypeEmailAddre ss 显示一个支持输入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

上面是添加左视图,其实添加右视图是一样的原理,只是设置的是右边两个相关的属性(rightViewModerightView)

编辑框的代理方法

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

设置编辑框的代理

先遵守编辑框代理协议(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]; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值