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(10, 10, 20, 20)]; imageview.image = [uiimage imagenamed:@"验证码"]; textfield.leftview = imageview;
设置右边视图(注意:需要先设置右边视图的显示模式为uitextfieldviewmodealways
)
textfield.rightviewmode = uitextfieldviewmodealways; uiimageview *imageview = [[uiimageview alloc] initwithframe:cgrectmake(10, 10, 20, 20)]; 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(0, 0, self.view.bounds.size.width, 100)]; redview.backgroundcolor = [uicolor redcolor]; textfield.inputview = redview; textfield.textcolor = [uicolor redcolor];
作者:
下一篇: SDNU 1st