使用ReactiveCocoa限制UITextField只能输入正确的金额
2015-06-04 18:53
561 查看
代码功能:
//0.priceTextFiled.keyboardType = UIKeyboardTypeDecimalPad;//必须
//1.限制priceTextFiled只允许输入正确的数额 比如 0 123 123. 123.0 123.12,不合法的: 00 0.1.23 将被过滤
//2.使用这种限制方法时,TextField不能允许移动光标(即:光标能且只能在最末尾),不能允许用户使用粘贴进行输入
//3.可以在TextField上盖一层透明Button来达到2的要求
keycode:
//0.priceTextFiled.keyboardType = UIKeyboardTypeDecimalPad;//必须
//1.限制priceTextFiled只允许输入正确的数额 比如 0 123 123. 123.0 123.12,不合法的: 00 0.1.23 将被过滤
//2.使用这种限制方法时,TextField不能允许移动光标(即:光标能且只能在最末尾),不能允许用户使用粘贴进行输入
//3.可以在TextField上盖一层透明Button来达到2的要求
keycode:
[priceTextFiled.rac_textSignal subscribeNext:^(NSString *x) { static NSInteger const maxIntegerLength=8;//最大整数位 static NSInteger const maxFloatLength=2;//最大精确到小数位 if (x.length) { //第一个字符处理 //第一个字符为0,且长度>1时 if ([[x substringWithRange:NSMakeRange(0, 1)] isEqualToString:@"0"]) { if (x.length>1) { if ([[x substringWithRange:NSMakeRange(1, 1)] isEqualToString:@"0"]) { //如果第二个字符还是0,即"00",则无效,改为"0" priceTextFiled.text=@"0"; }else if (![[x substringWithRange:NSMakeRange(1, 1)] isEqualToString:@"."]){ //如果第二个字符不是".",比如"03",清除首位的"0" priceTextFiled.text=[x substringFromIndex:1]; } } } //第一个字符为"."时,改为"0." else if ([[x substringWithRange:NSMakeRange(0, 1)] isEqualToString:@"."]){ priceTextFiled.text=@"0."; } //2个以上字符的处理 NSRange pointRange = [x rangeOfString:@"."]; NSRange pointsRange = [x rangeOfString:@".."]; if (pointsRange.length>0) { //含有2个小数点 priceTextFiled.text=[x substringToIndex:x.length-1]; } else if (pointRange.length>0){ //含有1个小数点时,并且已经输入了数字,则不能再次输入小数点 if ((pointRange.location!=x.length-1) && ([[x substringFromIndex:x.length-1]isEqualToString:@"."])) { priceTextFiled.text=[x substringToIndex:x.length-1]; } if (pointRange.location+maxFloatLength<x.length) { //输入位数超出精确度限制,进行截取 priceTextFiled.text=[x substringToIndex:pointRange.location+maxFloatLength+1]; } } else{ if (x.length>maxIntegerLength) { priceTextFiled.text=[x substringToIndex:maxIntegerLength]; } } } }];
相关文章推荐
- React Native
- React 入门实例教程
- ReactJS读书笔记三:组件的组合和通信
- 【Facebook的UI开发框架React入门之一】简介-goodmao
- 用react的思维考虑网页用户登陆的逻辑
- ReactJS读书笔记二:组件生命周期
- ReactiveCocoa配置相关
- ReactiveCocoa - iOS开发的新框架
- React 入门实例教程
- 两分钟了解REACTIVEX
- React直出实现与原理
- 两种高效的服务器设计模型:Reactor和Proactor模型
- react及flux架构范例Todomvc分析
- react-webpack 学习笔记~~第一步~环境
- ReactiveCocoa框架菜鸟入门(四)——信号(Signal)详解
- Netty那点事(四)Netty与Reactor模式
- Functional Reactive Programming<1>
- SaltStack的Reactor System
- ReactiveCocoa框架菜鸟入门(三)——信号(Signal)与订阅者(Subscriber)
- 关于ReactiveCocoa的RACObserve的一些研究