有时候项目中要求文本框中只能输入数字,如:价格、公里数、费用等等,一般的文本框不限制输入的格式,这时候只能强制限制输入框的输入格式了,代码如下:

#import "ViewController.h"

@interface ViewController ()<UITextFieldDelegate>{
         UITextField *numTextField;
}

@end

@implementation ViewController

- (void)viewDidLoad {
       [super viewDidLoad];

numTextField = [[UITextField alloc] initWithFrame:CGRectMake(60, 80, 100, 40)];
       numTextField.layer.borderColor = [[UIColor grayColor]CGColor];
       numTextField.layer.borderWidth = 1.0f;
       numTextField.delegate = self;
       numTextField.textAlignment = NSTextAlignmentCenter;
       [self.view addSubview:numTextField];
}

#pragma mark - UITextField限制输入数字
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
          if(textField == numTextField){
               return [self validateNumber:string];
          }
          return YES;
}

#pragma mark - 验证是否是纯数字
- (BOOL)validateNumber:(NSString*)number {
        BOOL res = YES;
        NSCharacterSet *tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
        int i = 0;
        while (i < number.length) {
              NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
              NSRange range = [string rangeOfCharacterFromSet:tmpSet];
              if (range.length == 0) {
                    res = NO;
                    NSLog(@"请输入数字");
                    break;
              }
              i++;
         }
        return res;
}
- (void)didReceiveMemoryWarning {
       [super didReceiveMemoryWarning];
      // Dispose of any resources that can be recreated.
}

@end

注:写文章的时候,突然想到了可以设置键盘样式为数字形式(UIKeyboardTypeNumberPad),这样的话应该也是可以限制的,通过模拟器调试,设置键盘样式没有作用,因为用电脑上的键盘可以输入汉字或字母,不知道真机是否可以,感兴趣的可以在真机上测试下。

iOS UITextField限制输入数字的更多相关文章

  1. iOS开发密码输入数字和字母混合

    #import "TestInPut.h" @implementation TestInPut +(BOOL)judgePassWordLegal:(NSString *)pass ...

  2. iOS UITextField限制输入字数

    关于iOS的文本框有时需要限制字数,如手机号,在UITextField的代理单纯写一个判断,在字数超过限制时,这时再想删除就删除不掉,可以在代理这样写,就解决 - (BOOL)textField:(U ...

  3. UITextField只能输入数字NSCharacterSet实现

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS ...

  4. 【iOS学习笔记】UITextField中的输入检测——限制只能输入数字和小数点

    最近趁着放假时间,在看The Big Nerd Ranch的iOS编程,想着重新复习一遍iOS开发的基础知识 于是从这一篇开始记录一些学习过程中遇到的小问题 书中第四章有一个温度转换的app实现,整体 ...

  5. iOS TextField输入限制(限制长度、只能输入数字,只能输入数字字母……)

    项目中各个地方都会用到TextField,textField的输入也会有各种需求,各种限制,每次用到的时候要重写一遍这些限制,导致各种垃圾代码,各种重复,有一天,我终于看不下去了,于是把textFie ...

  6. ios设置textField只能输入数字用于电话号码

    首先在.xib中将UITextField的Keyboard设置为Number Pad,但是使用时键盘会切回别的键盘无法对内容进行校验.通过神奇的百度我知道了通过以下方法可以解决这样的问题: 首先让.x ...

  7. 简单几步实现 IOS UITextField输入长度的控制

    在ios开发过程中,我们有时候需要对UITextField的输入长度进行控制,比如输入手机号码最大长度为11位等,而ios自身又不像android那样可以设置输入框的输入长度,接下来通过简单几步实现这 ...

  8. 限制 Text Field 输入的内容类型:只允许输入数字

    效果如下: ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController< ...

  9. iOS 限制TextField输入长度(标准)

    iOS 限制TextField输入长度(标准) 网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入 ...

随机推荐

  1. C# 反射浅析

    反射是一个运行库类型发现的过程.通过反射可以得到一个给定程序集所包含的所有类型的列表,这个列表包括给定类型中定义的方法.字段.属性和事件.此外,通过反射也可以动态的发现一组给定类支持的接口.方法的参数 ...

  2. Jenkins 命令

    Jenkins 服务集群环境的启动命令 #必须在root下启动 sh /home/jenkins/tomcat/bin/startup.sh dubbo服务注册中心 zookeeper启动命令 /we ...

  3. 编译GCC4.8.2

        公司的机器上默认是GCC4.4.6,为了完整的体验C++11,可以自己编译一个GCC4.8.2出来(自带了更高版本的glibc). 以下是备忘. 1.下载GCC源码以及依赖库 gmp ftp: ...

  4. phonegap + xcode5.0.2 配置开发环境

    phonegap官网:  http://phonegap.com/ 第一部:安装nodejs 安装地址:http://nodejs.org/ 安装phoneGap 官网下载http://phonega ...

  5. nRF24L01芯片控制——迈向无线的第一步

    nRF24L01芯片是一款专供单片机的射频收发芯片.工作于2.4GHz~2.5GHz ISM频段.融合了shockburst技术. 我先列出该芯片的硬件参数资料: 至于每个引脚的具体用途,可以参见技术 ...

  6. 【Python扩展阅读【转】】字符串的方法及注释

      capitalize()   把字符串的第一个字符改为大写   casefold()   把整个字符串的所有字符改为小写   center(width)   将字符串居中,并使用空格填充至长度wi ...

  7. Java学习之多态

    多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = new Child(); ...

  8. Python的入门要点

    一.输入 1.键盘输入 在python 2.7中,不用input(),而用 raw_input()读入一行键盘输入,并转化为字符串. s = map(int ,raw_input().split()) ...

  9. svd自我学习

    svd(singular value decomposition) 奇异值分解  2015-05-17 16:28:50 图和部分内容来自:http://blog.csdn.net/wangzhiqi ...

  10. python 中的高级函数reduce()

    reduce()函数也是Python内置的一个高阶函数.reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收 ...