iOS限制textfield输入两位小数

原创 2015年11月17日 17:52:33
<pre name="code" class="objc">#define myDotNumbers     @"0123456789.\n"   //匹配金额
#define myNumbers          @"0123456789\n"  //匹配数字

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSCharacterSet *cs;
    if ([textField isEqual:_accountMoney]) {
        NSScanner * scanner = [NSScanner scannerWithString:string];
        NSRange pointRange = [textField.text rangeOfString:@"."];
        if ((pointRange.length > 0 ) && (pointRange.location < range.location || pointRange.location > range.location + range.length)) {
            cs = [NSCharacterSet characterSetWithCharactersInString:myNumbers];
        }
        else {
            cs = [NSCharacterSet characterSetWithCharactersInString:myDotNumbers];
        }
        if ( [textField.text isEqualToString:@""] && [string isEqualToString:@"."]) {
            return NO;
        }
        short remain = 2;
        NSString * tempStr = [textField.text stringByAppendingString:string];
        NSUInteger strlen = [tempStr length];
        if (pointRange.length > 0 && pointRange.location > 0) {
            if ([string isEqualToString:@"."]) {
                return NO;
            }
            if (strlen > 0 && (strlen - pointRange.location) > remain + 1) {
                return NO;
            }
        }
        NSRange zeroRange = [textField.text rangeOfString:@"0"];
        if (zeroRange.length == 1 && zeroRange.location == 0 ) {
            if (![string isEqualToString:@"0"] && ![string isEqualToString:@"."] && [textField.text length] == 1) {
                textField.text = string;
                return NO;
            }
            else {
                if (pointRange.length == 0 && pointRange.location > 0 ) {
                    if ([string isEqualToString:@"0"]) {
                        return NO;
                    }
                }
            }
        }
        NSString * buffer;
        if (![scanner scanCharactersFromSet:cs intoString:&buffer] && ([string length] != 0 )) {
            return NO;
        }
    }
    return YES;
}




iOS限制textfield输入两位小数逻辑思维步骤记录(Swift)

先贴代码,逻辑思维在下面。 import UIKit class ViewController: UIViewController ,UITextFieldDelegate{ v...
  • tundraw
  • tundraw
  • 2016年03月14日 11:00
  • 883

UITextField 只能输入数字和小数点,只能有两位小数

//textField.text 输入之前的值 string 输入的字符 - (BOOL)textField:(UITextField *)textField shouldChange...
  • chengyakun11
  • chengyakun11
  • 2013年01月11日 16:34
  • 7340

iOS开发判断TextField中输入的数字为小数点后两位

原文:http://blog.csdn.net/chengyakun11/article/details/8494292 //在UITextField的代理方法中写下这样的方法,或者在你要用到的...
  • sinat_25027073
  • sinat_25027073
  • 2015年09月16日 11:09
  • 2106

限定EditText只能输入两位小数的两种方式

一,布局文件
  • yinzhijiezhan
  • yinzhijiezhan
  • 2015年07月09日 17:01
  • 11448

UITextField 只能输入数字、一个小数点、只能有两位小数

UITextField 只能输入数字、一个小数点、只能有两位小数
  • raoxudong
  • raoxudong
  • 2015年02月05日 09:44
  • 1870

Textbox 内限定输入只有两位小数的数字

初学C#, 正好自己编的小程序对这方面有点要求,就去网上翻了翻.结果发现度娘上能找很多示例代码都只能实现一部分的功能. 正好自己有需要就把自己需要的功能都整合起来做了个方法,要是哪位大神看到了麻烦给...
  • eivenlong
  • eivenlong
  • 2017年03月17日 15:32
  • 1013

Android EditText监听小数点让用户只能输入小数点后两位

最近项目需要输入价格,但是不想让用户在小数点后面输入太多,所以我封装了一个。当用户输入小数点的时候 监听小数点后面的位数,只要大于两位就立马删掉,封装好了,直接可以拿过来用!...
  • u011310942
  • u011310942
  • 2014年09月16日 09:23
  • 8342

android EditText限制输入框小数位数

先看下XML布局文件 android:id="@+id/et" android:layout_width="match_parent" ...
  • wurensen
  • wurensen
  • 2015年10月09日 11:12
  • 3769

Android基础--EditText输入框限制小数的位数解决方法

在开发中,会有一些需求,EditText输入框,只可以输入一位小数,或者只可以输入2位小数,那么我们该去怎么做呢? 首先在xml文件里面: ...
  • android_it
  • android_it
  • 2016年04月18日 15:11
  • 4552

ios 文本框只能输入数字保留两位小数和只能输入数字

只能输入数字保留两位小数: #pragma mark - #pragma mark UITextField - (BOOL) textField:(UITextField *)textField s...
  • qilixiang012
  • qilixiang012
  • 2014年11月13日 12:06
  • 1282
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS限制textfield输入两位小数
举报原因:
原因补充:

(最多只允许输入30个字)