UITextField中限制输入的办法
来源:互联网 发布:mac有剪切功能吗 编辑:程序博客网 时间:2024/06/03 14:56
常常开发应用的时候,希望UITextField能限制输入的内容,比如纯数字,或者英文加数字。当然iPhone可以直接限定键盘,但iPad就不理想,即使你把键盘设成Phone Pad,Number Pad之类的,至少都会出现定可以输入括号,@号之类的。但我们在应用中如果要求输入纯数字,或者有其他类的要求,怎么办呢?我给出一个解决方案(高手请路过,下面会讲的比较罗嗦):
原理:实现UITextField委托中的 “-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string” 方法。
首先,在头文件中加入UITextFieldDelegate委托,在IB中将UITextField的委托指向File’s Owner。好了,设好委托了,然后在.m文件中实现“-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string”,代码:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSCharacterSet *cs; cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet]; NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""]; BOOL canChange = [string isEqualToString:filtered]; return canChange;}
上面那个NUMBERS是一个宏,可以在文件顶部定义:
#define NUMBERS @”0123456789\n” (这个代表可以输入数字和换行,请注意这个\n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入\n,好惨,我在项目中才发现的。)
所以,如果你要限制输入英文和数字的话,就可以把这个定义为:
#define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。
当然,你还可以在以上方法return之前,做一提示的,比如提示用户只能输入数字之类的。如果你觉得有需要的话。
转自:http://www.cnblogs.com/duchengdong/archive/2012/06/09/2542796.html
- UITextField中限制输入的办法
- UITextField中限制输入的办法
- UITextField中限制输入的办法
- UITextField中限制输入的办法
- UITextField中限制输入的办法
- 限制UITextField的输入字数
- 限制UITextField输入的内容
- 限制UITextField的输入长度
- 限制UITextField输入的小数点
- 限制UITextField输入的字数
- UITextField限制输入的长度,UITextView限制输入的长度
- JAVA中限制文本框输入长度的办法
- 限制UITextField输入长度的方法
- 限制UITextField输入的内容类型
- UItextField限制字符输入的个数
- UITextField限制输入的只能是数字
- UITextField ,UITextView 输入长度的限制
- 动态限制UITextField的输入位数
- 用Runtime.getRuntime().exec(cmd)执行命令
- 语言的效率差异3
- weblogic上发布包含spring配置的应用报错
- nutch主流程代码阅读心得
- oracle一张表中实现多个字段的统计(多个count)
- UITextField中限制输入的办法
- LaTeX学习笔记
- Unity3D基础知识梳理(转)
- 程序中下载采购申请的附件
- sqlserver 高效分页查询
- LINUX如何启动/停止/重启MySQL/卸载/安装
- Linux和windows双系统启动终极解决方法
- LDAjava代码
- 江南style印证法国大预言家诺查丹玛斯世界末日预言?