UITextField详解之一:UITextField基本属性

UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等。创建一个用于输入的UITextField其实很简单,在平时使用中,更多的是需要 UITextField和其他UI控件之间进行交互。

1、UITextField的创建

创建一个UITextField其实很容易,代码如下,只需2行就搞定了。

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 100, 100, 30)];[self.view addSubview:textField];

可是这么写完,你会发现一个问题就是,我明明创建了UITextField,怎么在视图上看不到??原因就是UITextField默认的背景色是ClearColor,当然我们就看不到上面代码所创建的UITextField了。那可能会想,改下UITextField的背景颜色,不就可以看到了么??那咱们接下来就给UITextField添加一个背景色吧。

textField.backgroundColor = [UIColor redColor];

效果咱可以看下:

TextField

额,这个样式咱就先不要吐槽了⊙﹏⊙,至少,你要的UITextField已经出现在你的眼前了。点击这个UITextField,系统会自动弹出键盘(是不是很神奇o(╯□╰)o)。有一个小细节就是,UITextField的高度,大苹果认为30最好看(如果你是用xib或者StoryBoard创建的话,你会看到你拖进去的UITextField的高度值是30,且无法更改),既然咱们老大觉得30最好看,那就一般情况下就不要去改一些奇葩值,比如下面这款:

TF1

好不好看,仁者见仁咯。那咱们平时见到的带有圆角的UITextField是怎么来的呢,有同学可能想到了,修改UITextField的layer层的属性cornerRadius,当然没想到也不要紧。苹果直接给UITextField提供了一个borderStyle的属性。看这个名字就大概猜到了这是个枚举类型的值了,那它都有哪些枚举值呢??

typedef NS_ENUM(NSInteger, UITextBorderStyle) {    
UITextBorderStyleNone,    // 默认值,啥都没有    
UITextBorderStyleLine,     // 线性边框    
UITextBorderStyleBezel,    // 阴影效果边框    
UITextBorderStyleRoundedRect  // 带圆角的边框};

上边这些枚举值,看名字是看不明白的,那就实践一下呗:

textField.borderStyle = UITextBorderStyleRoundedRect;

这次不需要添加背景色,就可以看到所创建的UITextField了(通过UITextField的layer层想要实现同样的效果,还需设置borderWidth这一属性)。

2、UITextField的文本相关

既然咱们前边说了UITextField用于实现文本输入,当然得有文本相关的属性咯。第一个想到的就是UITextField有没有text属性呢??

textField.text = @"史上最牛逼的输入框";

运行一下,咱们会看到:

TF3

果然,UITextField是有text属性的呢(哇靠,是不是觉得自己真特么聪明…),好了,自恋完了,你有没有发现一个问题,就是“bi”字及以后的字出不来了。这该怎么办呢??聪明如我的同学已经想到了,是创建的UItextField的宽度不够,加大宽度就好了嘛。

有些时候,比如我们登录QQ,账号的输入框中会有一行销魂的字,告诉你,请输入QQ号码,密码的输入框中也有类似的提示。并且在你输入的一瞬间,这个提示就消失了,然后把你输入的内容删除,它又出来了。那这个该怎么实现呢??在textField里面加一个label?点击textField后去除这个label?但是在没进行过后面的学习,你并不知道怎么去实现它。伟大的苹果给我们提供了一个属性,让你只要用一行代码就可以做到在任何textField里面添加提示文本(欢呼声~~~)。不卖关子了,下面贴出代码:

textField.placeholder = @"史上最帅的程序员";

运行效果:TF4

怎么样,是不是够销魂?

那既然有text属性,就肯定要有文本对齐方式之类的属性咯,下面咱们来逐一介绍下UITextField的常用属性。

  • textField的文本对齐方式也仅仅只需要一行代码来实现:

textField.textAlignment = NSTextAlignmentCenter;

这个textAlignment同样是枚举类型:

/* Values for NSTextAlignment */typedef NS_ENUM(NSInteger, NSTextAlignment) {    NSTextAlignmentLeft      = 0,    // Visually left aligned  左对齐#if TARGET_OS_IPHONE    NSTextAlignmentCenter    = 1,    // Visually centered   居中    NSTextAlignmentRight     = 2,    // Visually right aligned  右对齐#endif    NSTextAlignmentJustified = 3,    // Fully-justified. The last line in a paragraph is natural-aligned.       NSTextAlignmentNatural   = 4,    // Indicates the default alignment for script}
  • clearsOnBeginEditing这个属性,默认为NO,设置为YES,是当你开始编辑的时候,就删除textField里面所有字符串。

  • keyboardType,设置textField的弹出键盘类型,也是一个枚举值。

typedef NS_ENUM(NSInteger, UIKeyboardType) { UIKeyboardTypeDefault, // Default type for the current input method. UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active  支持ASCII的默认键盘 UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.  数字+符号 UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).  URL键盘,支持.com按钮 只支持URL字符 UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry. 数字键盘 UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers). 拨号键盘 UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number. 电话键盘,也支持输入人名 UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).  可输入邮箱地址的键盘 UIKeyboardTypeDecimalPad NS_ENUM_AVAILABLE_IOS(4_1), // A number pad with a decimal point.  带有小数点的数字键盘 UIKeyboardTypeTwitter NS_ENUM_AVAILABLE_IOS(5_0), // A type optimized for twitter text entry (easy access to @ #)    优化的键盘,方便输入@、#字符 UIKeyboardTypeWebSearch NS_ENUM_AVAILABLE_IOS(7_0), // A default keyboard type with URL-oriented addition (shows space . prominently).  UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated };
  • autocapitalizationType,设置输入框输入的首字母是否大写

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

依旧是枚举值:

typedef enum { UITextAutocapitalizationTypeNone, // 不自动大写 UITextAutocapitalizationTypeWords, // 单词首字母大写 UITextAutocapitalizationTypeSentences, // 句子的首字母大写 UITextAutocapitalizationTypeAllCharacters,  // 所有字母都大写} UITextAutocapitalizationType;
  • returnKeyType返回键类型

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

还是枚举值:

typedef NS_ENUM(NSInteger, UIReturnKeyType) { UIReturnKeyDefault,  // 默认 灰色按钮,标有Return UIReturnKeyGo,   //  标有Go的蓝色按钮 UIReturnKeyGoogle, // 标有Google的蓝色按钮,用于搜索 UIReturnKeyJoin,  // 标有Join的蓝色按钮 UIReturnKeyNext,  // 标有Next的蓝色按钮 UIReturnKeyRoute, // 标有Route的蓝色按钮 UIReturnKeySearch, // 标有Search的蓝色按钮 UIReturnKeySend, // 标有Send的蓝色按钮 UIReturnKeyYaho

上面的很多枚举值,仅仅是显示的文字不同,具体实现什么功能,还需要在下面的学习中涉及到。现在咱们只需要知道键盘上显示Go,我也可以用它去实现Done的功能,这上面的文字只是给用户一个提示。

3、总结

这一章,仅仅介绍了一些UITextField的基本的常用属性,熟练掌握这些属性的使用,可以为我们接下来的学习打下很好的基础,下一章节,咱们开始讲解UITextField的代理方法,也是UITextField能具体到开发中,比较重要的一些方法。

o, // 标有Yahoo的蓝色按钮 UIReturnKeyDone, // 标有Done的蓝色按钮 UIReturnKeyEmergencyCall,  // 紧急呼叫按钮 UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),  // 标有Continue的蓝色按钮;

转载于:https://my.oschina.net/u/2537998/blog/608274

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值