iOS中UITextField常用设置和方法
//初始化textField并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(, , , )]; // 当输入框没有内容时,水印提示 提示内容为"请输入用户名" textField.placeholder = @"请输入用户名" // 设置leftView左边控件 // 设置leftView的frame时,x,y,height都是无效的,如果需要自定义,需要在外面添加一个view然后再在里面进行操作 // textField.leftViewMode UITextFieldViewModeNever 绝不显示,默认的值 UITextFieldViewModeWhileEditing 当开始编辑的时候显示 UITextFieldViewModeUnlessEditing 如果编辑,就不显示 UITextFieldViewModeAlways 总是显示 // 设置右边控件 多用于发送验证码等 //输入框中最后面是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容 text.clearButtonMode = UITextFieldViewWhileEditing; // 安全文本输入(暗文) textField.secureTextEntry = YES; // 设置边框样式,只有设置了才会显示边框样式 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"]; //输入框中一开始就有的文字 text.text = @"一开始就在输入框的文字"; //是否纠错, 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 = ; //设置键盘的样式 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 *)textFiel { //指定是否允许文本字段开始编辑,默认是YES } - (void)textFieldDidBeginEditing:(UITextField *)textField { //开始编辑,文本字段将成为 first responder } - (void)textFieldDidEndEditing:(UITextField *)textField { //获取最后textField上的内容 } - (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; } 通知 UITextField继承自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件 UITextFieldTextDidBeginEditingNotification UITextFieldTextDidChangeNotification UITextFieldTextDidEndEditingNotification 当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。 因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知 UIKeyboardWillShowNotification //键盘显示之前发送 UIKeyboardDidShowNotification //键盘显示之后发送 UIKeyboardWillHideNotification //键盘隐藏之前发送 UIKeyboardDidHideNotification //键盘隐藏之后发送 限制只能输入特定的字符 (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSCharacterSet *cs; cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet]; NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串 BOOL canChange = [string isEqualToString:filtered]; return canChange; } 上面那个NUMBERS是一个宏,可以在文件顶部定义: #define NUMBERS @”0123456789n” (这个代表可以输入数字和换行,请注意这个n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入n) 所以,如果你要限制输入英文和数字的话,就可以把这个定义为: #define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。 当然,你还可以在以上方法return之前,做一提示的,比如提示用户只能输入数字之类的。如果你觉得有需要的话。 限制只能输入一定长度的字符 - (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string; {//string就是此时输入的那个字符textField就是此时正在输入的那个输入框返回YES就是可以改变输入框的值NO相反 if([stringisEqualToString:@"n"])//按会车可以改变 { returnYES; } NSString* toBeString = [textField.textstringByReplacingCharactersInRange:rangewithString:string];//得到输入框的内容 if(self.myTextField == textField)//判断是否时我们想要限定的那个输入框 { if([toBeString length] >) {//如果输入框内容大于20则弹出警告 textField.text = [toBeString substringToIndex:]; UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nilmessage:@"超过最大字数不能输入了"delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil,nil] autorelease]; [alert show]; returnNO; } } returnYES; }
iOS中UITextField常用设置和方法的更多相关文章
- IOS中图片拉伸技巧与方法总结(转载)
以下内容转载自:http://my.oschina.net/u/2340880/blog/403996 IOS中图片拉伸技巧与方法总结 一.了解几个图像拉伸的函数和方法 1.直接拉伸法 简单暴力,却是 ...
- (数据科学学习手札131)pandas中的常用字符串处理方法总结
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...
- JavaScript中Number常用属性和方法
title: JavaScript中Number常用属性和方法 toc: false date: 2018-10-13 12:31:42 Number.MAX_VALUE--1.79769313486 ...
- Linux中Tomcat 自动设置CATALINA_HOME方法
Linux中Tomcat 自动设置CATALINA_HOME方法 在服务器部署中,我们经常会出现“在一个服务器上运行多个tomcat服务”的情况. 使用如下方法设置,可以无限复制平移扩展Tomcat, ...
- iOS中UIPickerView常见属性和方法的总结
UIPickerView是iOS中的原生选择器控件,使用方便,用法简单,效果漂亮. @property(nonatomic,assign) id<UIPickerViewDataSource&g ...
- iOS中的几个重要方法
iOS开发中几个重要的方法: 加载类到内存,程序刚启动的时候调用,调用在main函数之前 1.+(void)load{ } 初始化类,类第一次使用的时候调用一次 2.+(void)initialize ...
- iOS——浅谈iOS中三种生成随机数方法
ios 有如下三种随机数方法:
- Python中最常用的字符串方法!
字符串是字符序列.Python中内置的string类代表基于Unicode国际字符集的字符串.除了Python中常见的操作外,字符串还有一些专属于它们的附加方法.下图显示了所有这些可用的方法: Pyt ...
- iOS-浅谈iOS中三种生成随机数方法
ios 有如下三种随机数方法:
随机推荐
- ionic —指令
引用 <!--1.引入 ionic css和js--> <!--2.定义ng-app--> <!--3.定义 angular.module('myAPp',['ionic ...
- C语言——链式存储实现栈的基本运算算法
Lkstack.h // 链栈的定义 typedef struct node { int data; struct node *next; }LkStk; main.c #include <st ...
- Spring mvc与Struts2的比较
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能:spring会稍微比struts快.spring mvc是基于方法的设 ...
- python item repr doc format slots doc module class 析构 call 描述符
1.item # __getitem__ __setitem__ __delitem__ obj['属性']操作触发 class Foo: def __getitem__(self, item): r ...
- 1 python使用networkx或者graphviz,pygraphviz可视化RNN(recursive)中的二叉树
代码地址https://github.com/vijayvee/Recursive-neural-networks-TensorFlow 代码实现的是结构递归神经网络(Recursive NN,注意, ...
- 使用mathjax在博客中完美显示数学公式,支持PC,手机浏览器
在博客园的设置选项里 有页头HTML的框内输入: <script type="text/javascript" src="http://cdn.mathjax.or ...
- 安装Xcode主题
安装Xcode主题 下载地址 https://github.com/YouXianMing/Xcode-Themes 安装教程 1. 安装文件夹中的字体 2. 如下图,执行 ./cp_themes.s ...
- webapi 支持 text/plain 请求
今天遇到一个需求,请求以HTTPS + XML 访问我的API ,普通的webapi 是不支持这个请求的,故做以下代码进行支持 新增一个类,类名为PlainTextTypeFormatter publ ...
- 解决pycharm 提示no tests were found的问题
在使用pycharm,做日志模块封装,代码中觉得没有问题,运行就提示no tests were found 查询了下这个问题,原因是我创建的类名是以test方法开头,类似这样 不知道是不是把它默认当 ...
- Web App, Native APP,Hybird App 介绍
一.Web App 这个主要是采用统一的标准的 HTML,JavaScript.CSS 等 web 技术开发. 用户无需下载,通过不同平台 的浏览器访问来实现跨平台, 同时可以通过浏览器支持充分使用 ...