001 //初始化textfield并设置位置及大小
002   UITextField
*text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];
003   
004 //设置边框样式,只有设置了才会显示边框样式 
005   text.borderStyle
= UITextBorderStyleRoundedRect;
006  typedef enum {
007     UITextBorderStyleNone,
008     UITextBorderStyleLine,
009     UITextBorderStyleBezel,
010     UITextBorderStyleRoundedRect 
011   }
UITextBorderStyle;
012  
013 //设置输入框的背景颜色,此时设置为白色
如果使用了自定义的背景图片边框会被忽略掉 
014  
text.backgroundColor = [UIColor whiteColor];
015   
016 //设置背景
017   text.background
= [UIImage imageNamed:@
"dd.png"];
018   
019 //设置背景
020   text.disabledBackground
= [UIImage imageNamed:@
"cc.png"];
021 //当输入框没有内容时,水印提示
提示内容为password
022   text.placeholder
= @
"password";
023   
024 //设置输入框内容的字体样式和大小
025   text.font
= [UIFont fontWithName:@
"Arial" size:20.0f];
026   
027 //设置字体颜色
028   text.textColor
= [UIColor redColor];
029   
030 //输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容
031   text.clearButtonMode
= UITextFieldViewModeAlways;
032   
033 typedef enum {
034     UITextFieldViewModeNever, 重不出现
035     UITextFieldViewModeWhileEditing,
编辑时出现
036     UITextFieldViewModeUnlessEditing, 除了编辑外都出现
037     UITextFieldViewModeAlways
 一直出现
038 }
UITextFieldViewMode;
039   
040 //输入框中一开始就有的文字
041   text.text
= @
"一开始就在输入框的文字";
042   
043 //每输入一个字符就变成点
用语密码输入
044   text.secureTextEntry
= YES;
045   
046 //是否纠错
047   text.autocorrectionType
= UITextAutocorrectionTypeNo;
048   
049 typedef enum {
050     UITextAutocorrectionTypeDefault,
默认
051     UITextAutocorrectionTypeNo,
 不自动纠错
052     UITextAutocorrectionTypeYes, 自动纠错
053 }
UITextAutocorrectionType;
054   
055 //再次编辑就清空
056   text.clearsOnBeginEditing
= YES;
057   
058 //内容对齐方式
059   text.textAlignment
= UITextAlignmentLeft;
060   
061 //内容的垂直对齐方式 
UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment
062   text.contentVerticalAlignment
= UIControlContentVerticalAlignmentCenter;
063   
064 //设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动 
065   textFied.adjustsFontSizeToFitWidth
= YES;
066   
067 //设置自动缩小显示的最小字体大小
068   text.minimumFontSize
= 20;
069   
070 //设置键盘的样式
071   text.keyboardType
= UIKeyboardTypeNumberPad;
072   
073 typedef enum {
074     UIKeyboardTypeDefault,    
 默认键盘,支持所有字符        
075     UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘
076     UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符
077     UIKeyboardTypeURL,           
URL键盘,支持.com按钮 只支持URL字符
078 UIKeyboardTypeNumberPad,           
 数字键盘
079 UIKeyboardTypePhonePad, 
 电话键盘
080     UIKeyboardTypeNamePhonePad,
 电话键盘,也支持输入人名
081 UIKeyboardTypeEmailAddress,
 用于输入电子 邮件地址的键盘    
082 UIKeyboardTypeDecimalPad,  
 数字键盘 有数字和小数点
083     UIKeyboardTypeTwitter,     
 优化的键盘,方便输入@、#字符
084     UIKeyboardTypeAlphabet
= UIKeyboardTypeASCIICapable,
085 }
UIKeyboardType;
086   
087 //首字母是否大写
088   text.autocapitalizationType
= UITextAutocapitalizationTypeNone;
089   
090 typedef enum {
091     UITextAutocapitalizationTypeNone,
不自动大写
092     UITextAutocapitalizationTypeWords, 单词首字母大写
093     UITextAutocapitalizationTypeSentences, 句子的首字母大写
094     UITextAutocapitalizationTypeAllCharacters,
所有字母都大写
095 }
UITextAutocapitalizationType;
096   
097 //return键变成什么键
098  text.returnKeyType
=UIReturnKeyDone;
099   
100 typedef enum {
101     UIReturnKeyDefault,
默认 灰色按钮,标有Return
102     UIReturnKeyGo,   
 标有Go的蓝色按钮
103     UIReturnKeyGoogle,标有Google的蓝色按钮,用语搜索
104     UIReturnKeyJoin,标有Join的蓝色按钮
105     UIReturnKeyNext,标有Next的蓝色按钮
106     UIReturnKeyRoute,标有Route的蓝色按钮
107     UIReturnKeySearch,标有Search的蓝色按钮
108     UIReturnKeySend,标有Send的蓝色按钮
109     UIReturnKeyYahoo,标有Yahoo的蓝色按钮
110     UIReturnKeyYahoo,标有Yahoo的蓝色按钮
111     UIReturnKeyEmergencyCall,
紧急呼叫按钮
112 }
UIReturnKeyType;
113   
114 //键盘外观
115 textView.keyboardAppearance=UIKeyboardAppearanceDefault;
116 typedef enum {
117 UIKeyboardAppearanceDefault,
默认外观,浅灰色
118 UIKeyboardAppearanceAlert, 
 深灰 石墨色
119   
120 }
UIReturnKeyType;
121   
122   
123 //设置代理
用于实现协议
124   text.delegate
= self;
125   
126 //把textfield加到视图中
127   [self.window
addSubview:text];
128   
129 //最右侧加图片是以下代码 
左侧类似
130     UIImageView
*image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@
"right.png"]];
131     text.rightView=image;
132     text.rightViewMode
= UITextFieldViewModeAlways;
133   
134 typedef enum {
135     UITextFieldViewModeNever,
136     UITextFieldViewModeWhileEditing,
137     UITextFieldViewModeUnlessEditing,
138     UITextFieldViewModeAlways
139 }
UITextFieldViewMode;
140   
141   
142 //按return键键盘往下收 
becomeFirstResponder
143   
144 类要采用UITextFieldDelegate协议
145   
146 text.delegate
= self; 声明text的代理是我,我会去实现把键盘往下收的方法 这个方法在UITextFieldDelegate里所以我们要采用UITextFieldDelegate这个协议
147   
148 -
(
BOOL)textFieldShouldReturn:(UITextField
*)textField
149 {
150     [text
resignFirstResponder];    
//主要是[receiver
resignFirstResponder]在哪调用就能把receiver对应的键盘往下收
151 return YES;
152 }
153   
154   
155 重写绘制行为
156 除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。
157   
158
textRectForBounds:     
//重写来重置文字区域
159
drawTextInRect:         
//改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
160
placeholderRectForBounds:  
//重写来重置占位符区域
161
drawPlaceholderInRect:  
//重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
162
borderRectForBounds:  
//重写来重置边缘区域
163
editingRectForBounds:  
//重写来重置编辑区域
164
clearButtonRectForBounds:  
//重写来重置clearButton位置,改变size可能导致button的图片失真
165
leftViewRectForBounds:
166
rightViewRectForBounds:
167   
168 委托方法
169   
170 -
(
BOOL)textFieldShouldBeginEditing:(UITextField
*)textField{ 
171   
172 //返回一个BOOL值,指定是否循序文本字段开始编辑 
173   
174     return YES; 
175 } 
176   
177 -
(
void)textFieldDidBeginEditing:(UITextField
*)textField{ 
178  //开始编辑时触发,文本字段将成为first
responder 
179 } 
180   
181 -
(
BOOL)textFieldShouldEndEditing:(UITextField
*)textField{ 
182 //返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first
responder 
183   //要想在用户结束编辑时阻止文本字段消失,可以返回NO 
184   //这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息 
185  
186     return NO; 
187 } 
188   
189 -
(
BOOL)textField:(UITextField*)textField
shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 
190 //当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。 
191 //这对于想要加入撤销选项的应用程序特别有用 
192 //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。  
193 //要防止文字被改变可以返回NO 
194 //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中 
195   
196     return YES; 
197 } 
198   
199 -
(
BOOL)textFieldShouldClear:(UITextField
*)textField{ 
200   
201 //返回一个BOOL值指明是否允许根据用户请求清除内容 
202 //可以设置在特定条件下才允许清除内容 
203   
204     return YES; 
205 } 
206   
207 -(BOOL)textFieldShouldReturn:(UITextField
*)textField{ 
208   
209 //返回一个BOOL值,指明是否允许在按下回车键时结束编辑 
210  //如果允许要调用resignFirstResponder
方法,这回导致结束编辑,而键盘会被收起[textField resignFirstResponder];
211 //查一下resign这个单词的意思就明白这个方法了 
212     return YES; 
213 } 
214   
215   
216   
217 通知
218 UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件
219   
220 UITextFieldTextDidBeginEditingNotification
221 UITextFieldTextDidChangeNotification
222 UITextFieldTextDidEndEditingNotification
223 当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。
224   
225 因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知
226   
227 UIKeyboardWillShowNotification
 
//键盘显示之前发送
228 UIKeyboardDidShowNotification 
 
//键盘显示之后发送
229 UIKeyboardWillHideNotification
 
//键盘隐藏之前发送
230 UIKeyboardDidHideNotification 
 
//键盘隐藏之后发送
231  
232 1、Text
:设置文本框的默认文本。
233 2、Placeholder
: 可以在文本框中显示灰色的字,用于提示用户应该在这个文本框输入什么内容。当这个文本框中输入了数据时,用于提示的灰色的字将会自动消失。
234 3、Background
235 4、Disabled
: 若选中此项,用户将不能更改文本框内容。
236 5、接下来是三个按钮,用来设置对齐方式。
237 6、Border
Style : 选择边界风格。
238 7、Clear
Button : 这是一个下拉菜单,你可以选择清除按钮什么时候出现,所谓清除按钮就是出一个现在文本框右边的小 X ,你可以有以下选择:
239     7.1
Never appears : 从不出现
240     7.2
Appears 
while editing
: 编辑时出现
241     7.3
Appears unless editing :
242     7.4
Is always visible : 总是可见
243 8、Clear
when editing begins : 若选中此项,则当开始编辑这个文本框时,文本框中之前的内容会被清除掉。比如,你现在这个文本框 A 中输入了 
"What" ,之后去编辑文本框
B,若再回来编辑文本框 A ,则其中的 
"What" 会被立即清除。
244 9、Text
Color : 设置文本框中文本的颜色。
245 10、Font
: 设置文本的字体与字号。
246 11、Min
Font Size : 设置文本框可以显示的最小字体(不过我感觉没什么用)
247 12、Adjust
To Fit : 指定当文本框尺寸减小时,文本框中的文本是否也要缩小。选择它,可以使得全部文本都可见,即使文本很长。但是这个选项要跟 Min Font Size 配合使用,文本再缩小,也不会小于设定的 Min Font Size 。
248 接下来的部分用于设置键盘如何显示。
249 13、Captitalization
: 设置大写。下拉菜单中有四个选项:
250     13.1
None : 不设置大写
251     13.2
Words : 每个单词首字母大写,这里的单词指的是以空格分开的字符串
252     13.3
Sentances : 每个句子的第一个字母大写,这里的句子是以句号加空格分开的字符串
253     13.4
All Characters : 所以字母大写
254 14、Correction
: 检查拼写,默认是 YES 。
255 15、Keyboard
: 选择键盘类型,比如全数字、字母和数字等。
256 16、Appearance:
257 17、Return
Key : 选择返回键,可以选择 Search 、 Return 、 Done 等。
258 18、Auto-enable
Return Key : 如选择此项,则只有至少在文本框输入一个字符后键盘的返回键才有效。
259 19、Secure
: 当你的文本框用作密码输入框时,可以选择这个选项,此时,字符显示为星号。
260  
261   
262 1.Alignment
Horizontal 水平对齐方式
263 2.Alignment
Vertical 垂直对齐方式
264 3.用于返回一个BOOL值 输入框是否
Selected(选中) Enabled(可用) Highlighted(高亮)
265   
266 限制只能输入特定的字符
267   
268 (BOOL)textField:(UITextField
*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
269     NSCharacterSet
*cs;
270     cs
= [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
271   
272     NSString
*filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@
""]; //按cs分离出数组,数组按@""分离出字符串
273   
274     BOOL canChange
= [string isEqualToString:filtered];
275   
276     return canChange;
277 }
278   
279 上面那个NUMBERS是一个宏,可以在文件顶部定义:
280 #define
NUMBERS @”0123456789n” (这个代表可以输入数字和换行,请注意这个n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入n,好惨,我在项目中才发现的。)
281 所以,如果你要限制输入英文和数字的话,就可以把这个定义为:
282 #define
kAlphaNum   @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。
283 当然,你还可以在以上方法return之前,做一提示的,比如提示用户只能输入数字之类的。如果你觉得有需要的话。
284   
285 限制只能输入一定长度的字符
286   
287 -
(
BOOL)textField:(UITextField
*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
288 { //string就是此时输入的那个字符
textField就是此时正在输入的那个输入框 返回YES就是可以改变输入框的值 NO相反
289   
290 if ([string
isEqualToString:@
"n"]) //按会车可以改变
291     {
292         return YES;
293     }
294   
295     NSString
* toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
//得到输入框的内容
296   
297     if (self.myTextField
== textField) 
//判断是否时我们想要限定的那个输入框
298     {
299         if ([toBeString
length] > 20) { 
//如果输入框内容大于20则弹出警告
300   textField.text
= [toBeString substringToIndex:20];
301             UIAlertView
*alert = [[[UIAlertView alloc] initWithTitle:nil message:@
"超过最大字数不能输入了" delegate:nil
cancelButtonTitle:@
"Ok" otherButtonTitles:nil,
nil] autorelease];
302             [alert
show];
303             return NO;
304         }
305     }
306     return YES;
307 }

iOS开发基础控件--UITextField的更多相关文章

  1. iOS开发基础控件--UISegmentedControl

    UISegmentedControl全局外观设置 分段控件是我们常用的控件之一,今天把具体用法总结了下: 1.初始化UISegmentedControl [plain] view plaincopy ...

  2. iOS开发基础控件--UIButton

    01 //这里创建一个圆角矩形的按钮 02     UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 03 ...

  3. iOS开发基础控件--UILabel

    UILabel 的常见属性和方法: //创建UIlabel对象 UILabel* label = [[UILabel alloc] initWithFrame:self.view.bounds]; / ...

  4. IOS(一) 基础控件的介绍以及使用

    IOS的界面的制作,相对于Android来说 简洁了很多,虽然创建布局的方式都是两种(代码创建.布局文件) 但是Android中的xml布局文件在某些方面也属于代码创建,因为自己使用到得每一个属性 都 ...

  5. 【ios开发】控件细究1:UITableView

    工作了将近两个月,共接手两个项目,在项目中用的最多的就是UITableView了,但是也是问题出现的最多的地方,由于一开始不熟练,导致很多问题花了很长时间才解决.所以利用这两天空闲时间,好好梳理一下这 ...

  6. iOS开发-DatePicker控件

    时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time  , Count Do ...

  7. IOS开发之控件篇UINavigationController第一章 - 介绍

    UINavigationController是一个比较常见的控件,它连接个视图,例如一个视图走到另外一个视图,之间的联系都可以用这个NavigationController的方法 一般都会由两个部分组 ...

  8. IOS开发之控件篇UICollectionViewControllor第一章 - 普通介绍

    1.介绍 UICollectionView和UICollectionViewControllor是IOS6.0后引入的新控件 使用UICollectionView必须实现三个接口: UICollect ...

  9. IOS开发之控件篇UITabBarControllor第一章 - 介绍

    UITabBarControllor的基本样子 官方有个图介绍这个TabBar的结构,我们先来看看这个结构图 --------------------------------------------- ...

随机推荐

  1. (笔记)JQuery扩展方法实现Form表单与Json互相转换

    JQuery笔记 记两段代码,使用JQuery实现从表单获取json与后端交互,以及把后端返回的json映射到表单相应的字段上. 把表单转换出json对象 //把表单转换出json对象 $.fn.to ...

  2. CentOS 6.6下安装OpenOffice4.0

    最近由于项目需要,要在公司服务器上安装Openoffice,网上搜了一些资料后成功安装,现分享给大家. 1.首先先下载好需要的rpm包:Apache_OpenOffice_4.0.0_Linux_x8 ...

  3. Java 按行拆分txt

    T028619630|@|聚二零|@|M|@|1983-01-01|@|0|@|110101198301010098|@||@||@||@|湖南省衡阳市耒阳市蔡伦步行街1005号302|@|42100 ...

  4. 【requirejs】JS模块化工具requirejs教程

    初识requirejs 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元 ...

  5. ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4137402.html 1.需要保证vim的版本大于7.3.584,否则的话需要更新vim 可 ...

  6. undefined vs. null

    undefined vs. null 一.相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. var a = undefined; var a = n ...

  7. Kossel的一种滑块位置计算方法

    做了一个小激光雕刻机之后,研究了一下这款3D打印机的结构和工作原理,一下就对这个运动过程很感兴趣,这三个杆是怎么联动使得喷头保持在一个平面上运动呢?打算先做一个架构,然后把激光器放在上面不是可以方便雕 ...

  8. 与FPGA相关的独热码

    独热码在状态机里面使用比价广泛,这一块有些人爱用,有些人嫌烦,有时候可以用用格雷码跳转,不过格雷码只支持那种一步到底的,中间有分支就不好做了,所以后来还是回到了独热码的正道上. 说白了独热码的使用,在 ...

  9. jmeter数据关联_后置处理器_正则表达式提取器

  10. 杂项:大数据 (巨量数据集合(IT行业术语))

    ylbtech-杂项:大数据 (巨量数据集合(IT行业术语)) 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞 ...