ios开发UI篇—UITextfield
概述
UITextField
在界面中显示可编辑文本区域的对象。- 您可以使用文本字段来使用屏幕键盘从用户收集基于文本的输入。键盘可以配置许多不同类型的输入,如纯文本,电子邮件,数字等等。文本字段使用目标操作机制和委托对象来报告在编辑过程中所做的更改。
除了基本的文本编辑行为之外,还可以将叠加视图添加到文本字段以显示其他信息并提供其他可定位控件。您可以为诸如书签按钮或搜索图标等元素添加自定义叠加视图。文本字段提供内置的叠加视图来清除当前文本。自定义覆盖视图的使用是可选的。
属性和方法
初始化
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 30)];
设置占位文本
textField.placeholder = @"请输入文字";
设置文本
textField.text = @"测试";
设置文本的颜色
textField.textColor = [UIColor redColor];
设置文本的字体
textField.font = [UIFont systemFontOfSize:14];
设置文本的对齐方式
textField.textAlignment = NSTextAlignmentRight;
设置输入框不能编辑
[textField setEnabled:NO];
设置编辑框中的内容密码显示
textField.secureTextEntry = YES;
启用文本字段时显示的背景图像。该图像显示在文本字段内容的其余部分后面。
textField.background = [UIImage imageNamed:@"登录logo"];
设置边框样式(更多边框样式到补充说明中查看)默认的样式为UITextBorderStyleNone
textField.borderStyle = UITextBorderStyleRoundedRect;
设置清除按钮的模式(更多清除按钮的模式到补充说明中查看)默认样式为UITextFieldViewModeNever
textField.clearButtonMode = UITextFieldViewModeUnlessEditing;
文本字段文本的最小字体大小。当“调整为适合”选项启用时,文本字段会自动更改字体大小以确保文本的最大可读性。您可以使用此属性来指定您认为适合文本的最小字体大小。
textField.minimumFontSize = 12;
设置键盘类型(更多键盘类型到补充说明中查看)
textField.keyboardType = UIKeyboardTypeNumberPad;
设置键盘上返回键的类型(更多返回类型到补充说明中查看)
textField.returnKeyType = UIReturnKeyJoin;
设置键盘的视觉样式(更多键盘的视觉效果到补充说明中查看)
textField.keyboardAppearance = UIKeyboardAppearanceLight;
文本字段的拼写检查行为。此属性决定了拼写检查在打字过程中是启用还是禁用
textField.spellCheckingType = UITextSpellCheckingTypeNo;
此属性决定了拼写检查在打字过程中是启用还是禁用。启用拼写检查后,文本对象会为所有拼写错误的单词生成红色下划线。如果用户点击拼写错误的单词,则文本对象向用户呈现可能的更正列表。
此属性的默认值是default,启用自动更正时启用拼写检查。此属性中的值将覆盖用户在“设置”>“常规”>“键盘”中设置的拼写检查设置。
文本字段的自动纠正行为。此属性确定在输入过程中自动更正是启用还是禁用
textField.autocorrectionType = UITextAutocorrectionTypeYes;
自动大写样式适用于键入的文本。此属性决定在什么时候自动按下Shift
键
textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
设置左边视图(注意:需要先设置左边视图的显示模式为UITextFieldViewModeAlways
)
textField.leftViewMode = UITextFieldViewModeAlways;
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(, , , )];
imageView.image = [UIImage imageNamed:@"验证码"];
textField.leftView = imageView;
设置右边视图(注意:需要先设置右边视图的显示模式为UITextFieldViewModeAlways
)
textField.rightViewMode = UITextFieldViewModeAlways;
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(, , , )];
imageView.image = [UIImage imageNamed:@"验证码"];
textField.rightView = imageView;
代理方法
询问委托人是否应该在指定的文本字段中开始编辑。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; // return NO to disallow editing.
告诉委托人在指定的文本字段中开始编辑。
- (void)textFieldDidBeginEditing:(UITextField *)textField; // became first responder
询问委托人是否应在指定的文本字段中停止编辑。
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField; // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end
告诉委托人对指定的文本字段停止编辑。
- (void)textFieldDidEndEditing:(UITextField *)textField; // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called
告诉委托人对指定的文本字段停止编辑。
- (void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason NS_AVAILABLE_IOS(10_0); // if implemented, called in place of textFieldDidEndEditing:
询问委托人是否应该更改指定的文本。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text
询问委托人是否应删除文本字段的当前内容。
- (BOOL)textFieldShouldClear:(UITextField *)textField; // called when clear button pressed. return NO to ignore (no notifications)
询问委托人文本字段是否应处理按下返回按钮。
- (BOOL)textFieldShouldReturn:(UITextField *)textField; // called when 'return' key pressed. return NO to ignore.
补充说明
设置UITextField
占位文字的颜色的俩种方法
第一种
KVC修改 如果不先设置占位文字, 占位文字的颜色是不管用的:
textField.placeholder = @"占位字符";
textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
第二种
通过attributedPlaceholder
属性修改占位文字颜色
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"请输入占位文字" attributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:textField.font}];
textField.attributedPlaceholder = attrString;
UITextField.
borderStyle 边框样式的枚举以及说明
UITextField 的样式 |
说明 |
---|---|
UITextBorderStyleNone | 默认样式,文本字段不显示边框。 |
UITextBorderStyleLine | 在文本字段周围显示一个细长的矩形。 |
UITextBorderStyleBezel | 显示文本字段的边框样式边框。此样式通常用于标准数据输入字段。 |
UITextBorderStyleRoundedRect | 显示文本字段的圆角样式边框。 |
UITextField.
clearButtonMode 清除按钮的枚举以及说明
UITextField 清除按钮模式 |
说明 |
---|---|
UITextFieldViewModeNever | 清除按钮从不出现。 |
UITextFieldViewModeWhileEditing | 清除按钮仅在文本字段中编辑文本时显示。 |
UITextFieldViewModeUnlessEditing | 清除按钮仅在文本未被编辑时显示。 |
UITextFieldViewModeAlways | 如果文本字段包含文本,则始终显示清除按钮 |
UITextField.
keyboardType
键盘类型的枚举以及说明
UITextField 键盘类型 |
说明 |
---|---|
UIKeyboardTypeDefault | 指定当前输入法的默认键盘。 |
UIKeyboardTypeASCIICapable | 指定显示标准ASCII字符的键盘。 |
UIKeyboardTypeNumbersAndPunctuation | 指定数字和标点键盘。 |
UIKeyboardTypeURL | 指定为URL输入优化的键盘。这种键盘类型显着地以周期(“ .”)和斜杠(“/”)字符和“ .com”字符串为特征。 |
UIKeyboardTypeNumberPad | 指定用于PIN输入的数字小键盘。这种键盘类型0通过突出显示数字9。此键盘类型不支持自动大写。 |
UIKeyboardTypePhonePad | 指定用于输入电话号码的键盘。这种键盘类型显着地0通过数字9和“ *”和“ #”字符。此键盘类型不支持自动大写。 |
UIKeyboardTypeNamePhonePad | 指定用于输入个人姓名或电话号码的小键盘。此键盘类型不支持自动大写。 |
UIKeyboardTypeEmailAddress | 指定为输入电子邮件地址而优化的键盘。这种键盘类型突出地表现了at(“ @”),句号(“ .”)和空格字符。 |
UIKeyboardTypeDecimalPad | 指定一个带有数字和小数点的键盘。 |
UIKeyboardTypeTwitter | 指定一个针对Twitter文本输入进行优化的键盘,可以方便地访问at(“ @”)和hash(“ #”)字符。 |
UIKeyboardTypeWebSearch | 指定针对网页搜索字词和网址输入进行优化的键盘。这种类型的键盘突出显示了空格和句点(“ .”)字符。 |
UIKeyboardTypeASCIICapableNumberPad | 指定只输出ASCII数字的数字键盘。 |
UIKeyboardTypeAlphabet | 指定为字母输入而优化的键盘。 |
returnKeyType
键盘上返回键的枚举和说明
键盘上返回键的类型 | 说明 |
---|---|
UIReturnKeyDefault | 指定Return键的可见标题是“return”。 |
UIReturnKeyGo | 指定Return键的可见标题是“Go”。 |
UIReturnKeyGoogle | 指定返回键的可见标题是“Google”。 |
UIReturnKeyJoin | 指定Return键的可见标题是“Join”。 |
UIReturnKeyNext | 指定Return键的可见标题是“Next”。 |
UIReturnKeyRoute | 指定返回键的可见标题是“路由”。 |
UIReturnKeySearch | 指定返回键的可见标题是“搜索”。 |
UIReturnKeySend | 指定返回键的可见标题是“发送”。 |
UIReturnKeyYahoo | 指定返回键的可见标题是“Yahoo”。 |
UIReturnKeyDone | 指定返回键的可见标题是“完成”。 |
UIReturnKeyEmergencyCall | 指定返回键的可见标题是“紧急呼叫”。 |
UIReturnKeyContinue | 指定返回键的可见标题是“继续”。 |
keyboardAppearance
键盘的视觉效果的枚举值和说明
键盘的视觉效果 | 说明 |
---|---|
UIKeyboardAppearanceDefault | 指定当前输入法的默认键盘外观。这个常数对应于该UIKeyboardAppearanceLight 值。 |
UIKeyboardAppearanceDark | 指定适合黑暗UI外观的键盘外观。 |
UIKeyboardAppearanceLight | 指定适合轻量级UI外观的键盘外观。 |
UIKeyboardAppearanceAlert = UIKeyboardAppearanceDark | 已经废弃,指定适用于警报面板的键盘外观。 |
键盘相关通知
通知名称 | 说明 |
---|---|
UIKeyboardWillShowNotification | 键盘将要显示时发出的通知 |
UIKeyboardDidShowNotification | 键盘已经显示发出的通知 |
UIKeyboardWillHideNotification | 键盘将要隐藏时发出的通知 |
UIKeyboardDidHideNotification | 键盘已经隐藏时发出的通知 |
UIKeyboardWillChangeFrameNotification | 键盘的大小即将发生改变时发出的通知 |
UIKeyboardDidChangeFrameNotification | 键盘的大小已经发生改变时发出的通知 |
在文本字段成为第一响应者之前不久,编辑开始,并显示键盘(或其分配的输入视图)。编辑流程如下:
- 在成为第一响应者之前,文本字段调用其委托的方法。使用该方法来允许或阻止编辑文本字段的内容。
textFieldShouldBeginEditing:
- 文本字段成为第一响应者。
作为响应,系统显示键盘(或文本字段的输入视图),并根据需要发布通知。如果键盘或其他输入视图已经显示,则系统会改为通知和通知。UIKeyboardWillShowNotification
UIKeyboardDidShowNotification
UIKeyboardWillChangeFrameNotification
UIKeyboardDidChangeFrameNotification
- 文本字段调用其委托的方法并发布通知。
textFieldDidBeginEditing:UITextField
TextDidBeginEditingNotification
- 文本字段在编辑期间调用各种委托方法:
每当当前的文本改变,它调用该方法并发布通知。textField:shouldChangeCharactersInRange:replacementString:UI
TextFieldTextDidChangeNotification
当用户点击内置按钮清除文本时,它会调用该方法。textFieldShouldClear:
它调用用户点击键盘的返回按钮时的方法。textFieldShouldReturn:
- 在辞职作为第一响应者之前,文本字段调用其委托的方法。使用该方法来验证当前文本。
textFieldShouldEndEditing:
- 文本字段作为第一响应者辞职。
作为响应,系统根据需要隐藏或调整键盘。当隐藏键盘时,系统发布和通知。UIKeyboardWillHideNotification
UIKeyboardDidHideNotification
- 文本字段调用其委托的方法并发布通知。
textFieldDidEndEditing:UITextField
TextDidEndEditingNotification
自定义键盘
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(, , self.view.bounds.size.width, )];
redView.backgroundColor = [UIColor redColor];
textField.inputView = redView;
textField.textColor = [UIColor redColor];
作者:coder小鹏
ios开发UI篇—UITextfield的更多相关文章
- iOS开发UI篇—实现UItableview控件数据刷新
iOS开发UI篇—实现UItableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运 ...
- iOS开发UI篇—Date Picker和UITool Bar控件简单介绍
iOS开发UI篇—Date Picker和UITool Bar控件简单介绍 一.Date Picker控件 1.简单介绍: Date Picker显示时间的控件 有默认宽高,不用设置数据源和代理 如何 ...
- iOS开发UI篇—UIWindow简单介绍
iOS开发UI篇—UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...
- iOS开发UI篇—CAlayer(自定义layer)
iOS开发UI篇—CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的Draw ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
- iOS开发UI篇—懒加载
iOS开发UI篇—懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...
- iOS开发UI篇—CAlayer层的属性
iOS开发UI篇—CAlayer层的属性 一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property ...
- iOS开发UI篇—CAlayer(创建图层)
iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...
- iOS开发UI篇—CALayer简介
iOS开发UI篇—CALayer简介 一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实 ...
随机推荐
- android studio *.apk does not exist on disk
Build -> Clean Project Restart Android Studio
- 基于OpenMP的C++并行编程简单示例
示例要求:在整数A和B之间找到符合条件的值X,使f(X)=C. 示例代码(需要在VS中开启OpenMP支持): #include<iostream> #include<time.h& ...
- JSON学习笔记-1
1.什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一 ...
- linux 挂载命令mount、umount
mount /bin/mount语法:mount [-t文件系统] 设备文件名 挂载点mount -t iso9660 /dev/sr0 /mnt/cdromiso9660是固定的,光盘:所以 -t ...
- Oracle Sequence Cache 参数说明
转自 http://blog.csdn.net/tianlesoftware/article/details/5995051 之前整理的一篇文章: ORACLE SEQUENCE 介绍 http:// ...
- 在 Azure 中的 Linux 虚拟机上使用 SSL 证书保护 Web 服务器
若要保护 Web 服务器,可以使用安全套接字层 (SSL) 证书来加密 Web 流量. 这些 SSL 证书可存储在 Azure Key Vault 中,并可安全部署到 Azure 中的 Linux 虚 ...
- 使用 CLI 创建 Azure VM 的自定义映像
自定义映像类似于应用商店映像,不同的是自定义映像的创建者是你自己. 自定义映像可用于启动配置,例如预加载应用程序.应用程序配置和其他 OS 配置. 在本教程中,你将创建自己的 Azure 虚拟机自定义 ...
- 【MySQL】Linux下mysql安装全过程——小白入门篇(含有问题详解)
本次安装操作在申请的腾讯云上实现(版本:CentOS Linux release 7.4.1708 (Core) ). 根据教程实现(中途各种挖坑,填坑...),地址:http://www.runoo ...
- C++ 的继承与虚函数 读书笔记
一.类与类之间关系: 1.类与类之间可能会存在共性. 2.类与类之间必定会有差异. 3.为也节约开发时间和代码量,我们在设计类时可以把类的共享抽象出来形成一个基础类(基类). 4.使用基类+差异生成一 ...
- 执行一条sql语句update多条记录实现思路
如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?本文以一个示例向大家讲解下如何实现如标题所示的情况,有此需求的朋友可以了解下 通常情况下,我们会使用以下SQL语句来更新字段值: ...