iOS 开发 UITextField常用属性:文本框样式、文字样式、键盘样式、左右视图样式、清除按钮设置等

参考:UITextField常用属性:文本框样式、文字样式、键盘样式、左右视图样式、清除按钮设置等

UITextField 常用属性:

(1)可以根据需要设置文本框的样式(包括形状、边框颜色、背景等)。

(2)可以根据需要设置文字显示样式(包括输入密码时的密文显示、文字横向居中、纵向居中上下、输入的文字是否首席木大写、文字超过后是否缩小还是向右滚动等)。

(3)可以根据需要设置各种不同的键盘样式(只有数字、只有字母等等)。

(4)还有inputView可以弹出一个视图,用于取代弹出键盘,暂时不知道什么用处,但貌似可以用得地方很多啊。

(5)还有return的样式设置,可以设置为Google也可以设置为Go和Search等更形象的按钮。

(6)还有一个clearsOnBeginEditing是否设置清除按钮也很常用。

(7)还有用得比较多得估计是左右视图,也就是我们常见的用户名和密码的前面还有一个小icon图片表示用户的“小人”和表示密码的“锁”的图片,用左右视图可以加载进来,当然最后要记得设置左右视图模式为Always,不然默认是Never不显示的。

- (void)viewDidLoad {
  //textfiled1本想是textField1的,但不影响
  UITextField *textFiled1=[[UITextField alloc]init];
  //此时textField1已存在,但因为是透明背景,所以看不见,但是点击那块地方会发现光标闪烁可写
  //为了证明是透明背景而不是白色背景,我们可以设置self.view背景为红色,看看textField1是白色还是透明色
// self.view.backgroundColor=[UIColor redColor];
  textFiled1.frame=CGRectMake(10, 30, 300, 30);
  //设置边框样式
  //UITextBorderStyleRoundedRect-圆角矩形,背景是白色,不再是透明的
  //UITextBorderStyleLine-矩形,黑色边框,透明背景
  //UITextBorderStyleBezel-和上面类似,但是是灰色的边框,背景透明
  textFiled1.borderStyle=UITextBorderStyleRoundedRect;
  //设置背景颜色,会覆盖上面圆角矩形默认的白色背景
  textFiled1.backgroundColor=[UIColor purpleColor];
  //设置提示(默认)文字
  textFiled1.placeholder=@"请输入您的密码";
  //设置密文输入,就是和输入密码时类似的显示为小圆点
  textFiled1.secureTextEntry=YES;
  //设置键盘样式,比如银行取款密码只需要数字,有的输入邮箱需要@等等
  //UIKeyboardTypeAlphabet和UIKeyboardTypeDefault类似,就是我们平时看到那样,都是字母,然后有个按键可以切换符号
  //UIKeyboardTypeASCIICapable好像和上面差不多
  //UIKeyboardTypeDecimalPad,UIKeyboardTypeNumberPad都是数字,但前者多了一个“小数点”按键
  //UIKeyboardTypeEmailAddress-除了字母还有小数点和@出现
  //UIKeyboardTypeNamePhonePad-貌似正常
  //UIKeyboardTypePhonePad-电话键盘,不仅有数字还有*和#的那种
  //UIKeyboardTypeNumbersAndPunctuation-只有数字和标点符号
  //UIKeyboardTypeTwitter-除了字母还有@和#,这是微博的符号
  //UIKeyboardTypeURL-除字母,还有.com按钮,方便输入
  //UIKeyboardTypeWebSearch-主要区别在于return键变成了GO键
  //注意:如果是最xcode6下的模拟器的话,默认是不调出软键盘的,按CMD+K可以调出,或者在菜单Hardware里地Keyboard里设置
  textFiled1.keyboardType=UIKeyboardTypeWebSearch;
  //设置键盘外观
  //UIKeyboardAppearanceDark和UIKeyboardAppearanceAlert都是把键盘背景变成半透明灰色区别不明显
  //UIKeyboardAppearanceLight貌似和UIKeyboardAppearanceDefault一样,没啥区别
  textFiled1.keyboardAppearance=UIKeyboardAppearanceAlert;

  //设置弹出视图,inputView即弹出的不是键盘而是这个视图
  //设置的frame时,只有高度有用,其他x和y和宽都是无效的,宽是默认的整个键盘宽度
  UIImageView *imgView1=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"logo-60@3x.png"]];
  imgView1.frame=CGRectMake(60, 60, 300, 300);
  textFiled1.inputView=imgView1;

  //设置左视图,就是用户名和密码,有时候放个图片的位置
  UIView *view1=[[UIView alloc]init];
  //x和y无效,x都是0,而y是根据高度来自动调整的。即高度如果超过textField则默认是textField高,如小于textField高度,则上下居中显示。唯一有效的就是宽度
  view1.frame=CGRectMake(10, 500, 50, 10);
  view1.backgroundColor=[UIColor orangeColor];
  textFiled1.leftView=view1;
  //最重要的时:默认它是不显示的即UITextFieldViewModeNever,我们可以设置永远显示UITextFieldViewModeAlways
  //UITextFieldViewModeUnlessEditing-一开始就有,点击框,呃,貌似还有
  //UITextFieldViewModeWhileEditing-一开始没有,点击框就出现
  textFiled1.leftViewMode=UITextFieldViewModeAlways;

  //同样,我们可以设置右视图,当然也可以加载和图片进来
  UIImageView *imgView2=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"logo-60@3x.png"]];
  imgView2.frame=CGRectMake(10, 500, 50, 10);
  textFiled1.rightView=imgView2;
  textFiled1.rightViewMode=UITextFieldViewModeAlways;

  //设置清除按钮,就是那个叉叉X,一点击整个输入框的文字全部删除重新输入的那个X(我们先注释掉不让右视图显示,来查看效果)
  //其实我们在写clearButtonMode是它又提示说这是一个UITextFieldViewMode类型,所以也是和上面一样
  textFiled1.clearButtonMode=UITextFieldViewModeWhileEditing;

  //再次编辑时是否清空内容,这个除特定场景外很少用,会让用户抓狂的
  //当然为了模拟再次编辑,我们需要鼠标点到其他地方然后再点回来,所以再创建一个textField
  textFiled1.clearsOnBeginEditing=NO;
  //这个clearsOnInsertion貌似点击回去再次编辑时不清楚,但是只要一输入内容就会清除之前的
  textFiled1.clearsOnInsertion=YES;
  UITextField *textField2=[[UITextField alloc]init];
  textField2.frame=CGRectMake(10, 80, 300, 100);
  textField2.borderStyle=UITextBorderStyleRoundedRect;
  [self.view addSubview:textField2];

  //我们用上面创建的textField2来做如下
  //纵向对齐方式,默认是居中
  //UIControlContentVerticalAlignmentCenter居中,所以Top、Bottom就是居上居下。Fill貌似和Top差不多
  textField2.contentVerticalAlignment=UIControlContentVerticalAlignmentFill;
  //当然还有横向对齐
  //也有左中右和Fill四种,但是貌似没看到什么效果,可能对文字无效,因为有专门的针对文字的设置
  textField2.contentHorizontalAlignment=UIControlContentHorizontalAlignmentRight;
  //设置文字对齐方式
  //同样我们输入textAlignment时有提示是NSTextAlignment类型,有好几种,不细讲
  textField2.textAlignment=NSTextAlignmentCenter;
  //设置调整文字大小以适配宽度(即输入不下时缩小文字,实在缩小不了了,就向后滚动),默认是向右滚动的
  textField2.adjustsFontSizeToFitWidth=YES;
  //设置最小字号,和上面有关,即小于这个字号的时候,我就不缩小了,直接向右滚动
  textField2.minimumFontSize=2;
  //设置字母大小样式,输入autocapitalizationType时有提示是UITextAutocapitalizationType类型
  //UITextAutocapitalizationTypeAllCharacters-所有字母大写(用键盘输入的话发现失效,需要用软键盘输入才有效,以下同理)
  //UITextAutocapitalizationTypeWords-单词首字母大写
  //UITextAutocapitalizationTypeSentences-句首字母大写
  textField2.autocapitalizationType=UITextAutocapitalizationTypeSentences;

  //设置return样式,有Done/Go/Next/Join/Google/Search/Yahoo/EmergencyCall/Send等,除了默认外,其他的按钮都是蓝颜色背景
  textField2.returnKeyType=UIReturnKeyEmergencyCall;

  [self.view addSubview:textFiled1];

  [super viewDidLoad];
  // Do any additional setup after loading the view, typically from a nib.
}
//初始化textfield并设置位置及大小
 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];

//设置边框样式,只有设置了才会显示边框样式 
 text.borderStyle = UITextBorderStyleRoundedRect;

 typedef enum {
 UITextBorderStyleNone, 
 UITextBorderStyleLine,
 UITextBorderStyleBezel,
 UITextBorderStyleRoundedRect 
 } UITextBorderStyle;

//设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉 
 text.backgroundColor = [UIColor whiteColor];

//设置背景
 text.background = [UIImage imageNamed:@"dd.png"];

//设置背景 
 text.disabledBackground = [UIImage imageNamed:@"cc.png"];

//当输入框没有内容时,水印提示 提示内容为password
 text.placeholder = @"password";

//设置输入框内容的字体样式和大小
 text.font = [UIFont fontWithName:@"Arial" size:20.0f];

//设置字体颜色
 text.textColor = [UIColor redColor];

//输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容
 text.clearButtonMode = UITextFieldViewModeAlways;

typedef enum {
 UITextFieldViewModeNever, 重不出现
 UITextFieldViewModeWhileEditing, 编辑时出现
 UITextFieldViewModeUnlessEditing, 除了编辑外都出现
 UITextFieldViewModeAlways 一直出现
} UITextFieldViewMode;

//输入框中一开始就有的文字
 text.text = @"一开始就在输入框的文字";

//每输入一个字符就变成点 用语密码输入
 text.secureTextEntry = YES;

//是否纠错
 text.autocorrectionType = UITextAutocorrectionTypeNo;

typedef enum {
 UITextAutocorrectionTypeDefault, 默认
 UITextAutocorrectionTypeNo, 不自动纠错
 UITextAutocorrectionTypeYes, 自动纠错
} UITextAutocorrectionType;

//再次编辑就清空
 text.clearsOnBeginEditing = YES; 

//内容对齐方式
 text.textAlignment = UITextAlignmentLeft;

//内容的垂直对齐方式 UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment
 text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动 
 textFied.adjustsFontSizeToFitWidth = YES;

//设置自动缩小显示的最小字体大小
 text.minimumFontSize = 20;

//设置键盘的样式
 text.keyboardType = UIKeyboardTypeNumberPad;

typedef enum {
 UIKeyboardTypeDefault,  默认键盘,支持所有字符   
 UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘
 UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符
 UIKeyboardTypeURL,   URL键盘,支持.com按钮 只支持URL字符
UIKeyboardTypeNumberPad,    数字键盘
UIKeyboardTypePhonePad,  电话键盘
 UIKeyboardTypeNamePhonePad, 电话键盘,也支持输入人名
UIKeyboardTypeEmailAddress, 用于输入电子 邮件地址的键盘  
UIKeyboardTypeDecimalPad,  数字键盘 有数字和小数点
 UIKeyboardTypeTwitter,  优化的键盘,方便输入@、#字符
 UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, 
} UIKeyboardType;

//首字母是否大写
 text.autocapitalizationType = UITextAutocapitalizationTypeNone;

typedef enum {
 UITextAutocapitalizationTypeNone, 不自动大写
 UITextAutocapitalizationTypeWords, 单词首字母大写
 UITextAutocapitalizationTypeSentences, 句子的首字母大写
 UITextAutocapitalizationTypeAllCharacters, 所有字母都大写
} UITextAutocapitalizationType;

//return键变成什么键
 text.returnKeyType =UIReturnKeyDone;

typedef enum {
 UIReturnKeyDefault, 默认 灰色按钮,标有Return
 UIReturnKeyGo,  标有Go的蓝色按钮
 UIReturnKeyGoogle,
标有Google的蓝色按钮,用语搜索
 UIReturnKeyJoin,
标有Join的蓝色按钮
 UIReturnKeyNext,
标有Next的蓝色按钮
 UIReturnKeyRoute,
标有Route的蓝色按钮
 UIReturnKeySearch,
标有Search的蓝色按钮
 UIReturnKeySend,
标有Send的蓝色按钮
 UIReturnKeyYahoo,
标有Yahoo的蓝色按钮
 UIReturnKeyYahoo,
标有Yahoo的蓝色按钮
 UIReturnKeyEmergencyCall, 紧急呼叫按钮
} UIReturnKeyType;

//键盘外观
textView.keyboardAppearance=UIKeyboardAppearanceDefault;
typedef enum {
UIKeyboardAppearanceDefault, 默认外观,浅灰色
UIKeyboardAppearanceAlert,  深灰 石墨色

} UIReturnKeyType;

//设置代理 用于实现协议
 text.delegate = self;

//把textfield加到视图中
 [self.window addSubview:text];

//最右侧加图片是以下代码 左侧类似
 UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
 text.rightView=image;
 text.rightViewMode = UITextFieldViewModeAlways; 

typedef enum {
 UITextFieldViewModeNever,
 UITextFieldViewModeWhileEditing,
 UITextFieldViewModeUnlessEditing,
 UITextFieldViewModeAlways
} UITextFieldViewMode;

//按return键键盘往下收 becomeFirstResponder

类要采用UITextFieldDelegate协议

text.delegate = self; 声明text的代理是我,我会去实现把键盘往下收的方法 这个方法在UITextFieldDelegate里所以我们要采用UITextFieldDelegate这个协议

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
 [text resignFirstResponder]; //主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收
 return YES;
}

重写绘制行为
除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。

– textRectForBounds:   //重写来重置文字区域
– drawTextInRect:    
//改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
– placeholderRectForBounds:  
//重写来重置占位符区域
– drawPlaceholderInRect:  
//重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
– borderRectForBounds:  
//重写来重置边缘区域
– editingRectForBounds:  
//重写来重置编辑区域
– clearButtonRectForBounds:  
//重写来重置clearButton位置,改变size可能导致button的图片失真
– leftViewRectForBounds:
– rightViewRectForBounds:

委托方法

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 

//返回一个BOOL值,指定是否循序文本字段开始编辑 

 return YES; 
} 

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 

 //开始编辑时触发,文本字段将成为first responder 
} 

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ 

//返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder 

//要想在用户结束编辑时阻止文本字段消失,可以返回NO 

//这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息 

 return NO; 
} 

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 

//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。 
//这对于想要加入撤销选项的应用程序特别有用 
//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。  
//要防止文字被改变可以返回NO 
//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中 

  return YES; 
} 

- (BOOL)textFieldShouldClear:(UITextField *)textField{ 

//返回一个BOOL值指明是否允许根据用户请求清除内容 
//可以设置在特定条件下才允许清除内容 

  return YES; 
} 

-(BOOL)textFieldShouldReturn:(UITextField *)textField{ 

//返回一个BOOL值,指明是否允许在按下回车键时结束编辑 

//如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起[textField resignFirstResponder];
//查一下resign这个单词的意思就明白这个方法了 

  return YES; 
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值