限制UITextField只可以输入数字

今天项目中有个文本框需要只可以输入数字的需求,首先在.xib中将UITextField的Keyboard设置为Number Pad,但是使用时键盘会切回别的键盘无法对内容进行校验。通过神奇的百度我知道了通过以下方法可以解决这样的问题:

首先让.xib的viewController实现UITextFieldDelegate然后和想要校验的控件关联。

然后将下列代码粘贴到类中即可。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    return [self validateNumber:string];
}

- (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;
            break;
        }
        i++;
    }
    return res;
}

  

还有一种方式,以下这种方式我还没有试过但是我找到了就分享出来吧:

1.定义常量以备使用

#define NUMBERS @"0123456789"

  

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string
{
        NSCharacterSet*cs;
        cs = [[NSCharacterSetcharacterSetWithCharactersInString:NUMBERS] invertedSet];
        NSString*filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
        BOOLbasicTest = [string isEqualToString:filtered];
        if(!basicTest) {

            UIAlertView* alert = [[UIAlertViewalloc] initWithTitle:@"提示"
                                                            message:@"请输入数字"
                                                           delegate:nil
                                                  cancelButtonTitle:@"确定"
                                                  otherButtonTitles:nil];

            [alert show];
            returnNO;

        }
    returnYES;
}

  

时间: 2024-08-04 05:05:03

限制UITextField只可以输入数字的相关文章

第一个app-进阶:1、让EditText屏蔽软键盘仍能光标闪动:2、EditText 的inputType参数类型(密码方式-隐藏显示、只允许输入数字等等)

EditText屏蔽软键盘后,光标消失问题 开始我有个需求:屏蔽系统软键盘 于是找到并使用这个方法: //edit_text1.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出//edit_text2.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出//edit_text3.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出 让三个EditText都成功地没有软键盘弹出. 后来我

WinForm笔记一:文本框只允许输入数字

在WinForm的文本框中,有时候只允许数字,而不能输入除数字以外的其他字符,要调用TextBox的KeyPress事件,代码如下: //只允许输入数字 if (e.KeyChar<'0'||e.KeyChar>'9') { e.Handled = true; } //允许输入退格键 if (e.KeyChar == 8) { e.Handled = false; } TextBox tBox = sender as TextBox;        //哪个文本框调用,tBox 就是哪个文本框

C# Winform textBox 只允许输入数字

private void textBox1_KeyPress(object sender,KeyPressEventArgs e) { //数字0~9所对应的keychar为48~57 e.Handled = true; //输入0-9 if ((e.KeyChar >= 47 && e.KeyChar <= 58)) { e.Handled = false; } } 限制textBox的输入,只能输入数字 C# Winform textBox 只允许输入数字,布布扣,bubu

javascript控制input只允许输入数字

好多时候我们是希望能设置input只能输入数字:比如说商城选择商品数量:比如说手机号等等: 看了下京东和天猫: 天猫选择商品数量是只能输入数字:而且数量不能小于1: 反观京东:连中文都是可以输入的:不得不说:细节上做的比天猫差远了: 当然重点不是要来吐槽:下面就是用Js控制input只允许输入数字的代码:在用到的时候可以直接拿走:不用谢: 代码如下: 此input只允许输入0-9的数字:<input onkeyup="if(event.keyCode !=37 && eve

C# TextBox中只允许输入数字的方法

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using DevComponents.DotNetBar.Controls; namespace WinDrilling.ErrorJudge.Class{ class ClsTxtOperate { #region TextBoxX控件只能输入数字函数 //只能输入数字函数 p

规定文本框只能够输入数字包括小数的jQuery代码

规定文本框只能够输入数字包括小数的jQuery代码:文本框有时候规定只能够输入整数,这里就不多介绍了,具体可以参阅jQuery如何规定文本框只能输入整数一章节,不过有时候也可以输入小数,下面就通过代码实例介绍一下如何实现此功能.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="

mfc edit只允许输入数字

记录笔记: 转自 猪八戒学做网站 SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表? SQL Server 2005中的分区表(二):如何添加.查询.修改分区表中的数据 SQL Server 2005中的分区表(三):将普通表转换成分区表 SQL Server 2005中的分区表(四):删除(合并)一个分区 SQL Server 2005中的分区表(五):添加一个分区 SQL Server 2005中的分区表(六):将已分区表转换成普通表 mfc e

c# TextBox只允许输入数字,禁用右键粘贴,允许Ctrl+v粘贴数字

TextBox只允许输入数字,最大长度为10 //TextBox.ShortcutsEnabled为false 禁止右键和Ctrl+v private void txtNumber_KeyPress(object sender, KeyPressEventArgs e) { //只允许输入数字,粘贴数字 if (!(Char.IsNumber(e.KeyChar) || e.KeyChar == (char)8)) { e.Handled = true; } } //允许Ctrl+v粘贴数字 p

文本框如何限制只能够输入数字

文本框如何限制只能够输入数字:在某些需求下,文本框的内容只允许被输入数字,例如手机号码或者身份证号码等等,下面就通过一个实例简单介绍一下如何实现此效果,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" />