限制 Text Field 输入的内容类型:只允许输入数字
效果如下:

ViewController.h
#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UITextField *txtLimitInput; @end
ViewController.m
#import "ViewController.h" @interface ViewController ()
- (void)layoutUI;
- (BOOL)validateNumberByASCII:(NSString *)string;
- (BOOL)validateNumberByRange:(NSString *)string;
- (BOOL)validateNumberByRegExp:(NSString *)string;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; [self layoutUI];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (void)layoutUI {
_txtLimitInput.placeholder = @"请输入数字"; //第一种方式:设置键盘类型
//_txtLimitInput.keyboardType = UIKeyboardTypeDecimalPad; //第二种方式:通过 UITextFieldDelegate 的 shouldChangeCharactersInRange: 方法
_txtLimitInput.delegate = self;
} #pragma mark - 三种判断字符串内容是否是有效数字的方式
/**
* 『ASCII码』判断字符串内容是否是有效数字
*
* @param string 需要验证的字符串
*
* @return 字符串内容是否是有效数字
*/
- (BOOL)validateNumberByASCII:(NSString *)string {
BOOL isValid = YES;
NSUInteger len = string.length;
if (len > ) {
for (NSUInteger i=; i<len; i++) {
NSUInteger asciiCode = [string characterAtIndex:i];
if (asciiCode < || asciiCode > ) {
isValid = NO;
break;
}
}
}
return isValid;
} /**
* 『字符范围』判断字符串内容是否是有效数字
*
* @param string 需要验证的字符串
*
* @return 字符串内容是否是有效数字
*/
- (BOOL)validateNumberByRange:(NSString *)string {
BOOL isValid = YES;
NSUInteger len = string.length;
if (len > ) {
NSCharacterSet *validNumberCS = [NSCharacterSet characterSetWithCharactersInString:@""];
NSUInteger singleStrIndex = ;
do {
NSString *singleStr = [string substringWithRange:NSMakeRange(singleStrIndex, )];
NSRange range = [singleStr rangeOfCharacterFromSet:validNumberCS];
if (range.length == ) {
isValid = NO;
break;
}
singleStrIndex++;
} while (singleStrIndex < len);
}
return isValid;
} /**
* 『正则表达式;推荐使用,不用循环遍历,控制更灵活』判断字符串内容是否是有效数字
*
* @param string 需要验证的字符串
*
* @return 字符串内容是否是有效数字
*/
- (BOOL)validateNumberByRegExp:(NSString *)string {
BOOL isValid = YES;
NSUInteger len = string.length;
if (len > ) {
NSString *numberRegex = @"^[0-9]*$";
NSPredicate *numberPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberRegex];
isValid = [numberPredicate evaluateWithObject:string];
}
return isValid;
} #pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
//return [self validateNumberByASCII:string];
//return [self validateNumberByRange:string];
return [self validateNumberByRegExp:string]; //推荐方式
} @end
Main.storyboard
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="vXZ-lx-hvc">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="ufC-wZ-h7g">
<objects>
<viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
<viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mb3-C5-UpN">
<rect key="frame" x="200" y="285" width="200" height="30"/>
<constraints>
<constraint firstAttribute="width" constant="200" id="8dl-R0-OzV"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="限制 Text Field 输入的内容类型" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8zf-7E-ija">
<rect key="frame" x="200" y="255" width="196" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="mb3-C5-UpN" firstAttribute="centerX" secondItem="kh9-bI-dsS" secondAttribute="centerX" id="Dh5-bw-2LN"/>
<constraint firstItem="mb3-C5-UpN" firstAttribute="centerY" secondItem="kh9-bI-dsS" secondAttribute="centerY" id="Lby-hq-mya"/>
<constraint firstItem="mb3-C5-UpN" firstAttribute="leading" secondItem="8zf-7E-ija" secondAttribute="leading" id="SyI-SC-iNN"/>
<constraint firstItem="mb3-C5-UpN" firstAttribute="top" secondItem="8zf-7E-ija" secondAttribute="bottom" constant="13" id="yuO-kC-OCZ"/>
</constraints>
</view>
<connections>
<outlet property="txtLimitInput" destination="mb3-C5-UpN" id="cYi-Ep-sWq"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
限制 Text Field 输入的内容类型:只允许输入数字的更多相关文章
- 很实用的js限制不让输入其他字符,只让输入数字和 js生成UUID
onkeyup="this.value=this.value.replace(/\D/g,'')" js生产UUID var createUUID = (function (uui ...
- (很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]
如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理,用什么事件呢? 所以Field的Onchange事件是没用的. DBGrid1.Selec ...
- 如何实时获取DBGrid 中当前单元格输入的内容?
如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理, 用什么事件呢? 所以Field的Onchange事件是没用的. 这个问题简单啊,每输入1 ...
- [JS] 文本框判断输入的内容是否为数字
可以通过触发文本框的onchange事件来对输入的内容进行判断是否为数字 文本框的属性设置: 把onchange的属性对应的js函数写好即可 参数传输的是当前控件的value值,即text值 < ...
- springmvc中只接受固定提交内容类型的请求
springmvc中的@RequestMapping注解是用来处理请求地址映射的,如果某个接口我们只接受请求的提交内容类型(Content-Type)为application/json或text/ht ...
- 当开始输入文字以及完成文字输入时,变换text field的背景以及系统自带一键删除的 叉叉
当开始输入文字以及完成文字输入时,变换text field的背景. -(BOOL) textFieldShouldBeginEditing:(UITextField *)textField{ [tex ...
- 响应消息的内容类型 text/html; charset=utf-8 与绑定(application/soap+xml; charset=utf-8)的内容类型不匹配。
问题表述: 响应消息的内容类型 text/html; charset=utf-8 与绑定(application/soap+xml; charset=utf-8)的内容类型不匹配. 说明: 此类问题当 ...
- WCF学习笔记——不支持内容类型 text/xml; charset=utf-8
我在使用WCF的时候,客户端运行报错: 不支持内容类型 text/xml; charset=utf-8 原因是WCF服务做了修改.刷新客户端的服务引用,问题消失 =================== ...
- Webservice报错客户端发现响应内容类型为“application/json;charset=UTF-8”,但应为“text/xml”。
控制台对接Webservice正常,同样的方法在Web项目上报错: 客户端发现响应内容类型为“application/json;charset=UTF-8”,但应为“text/xml”.请求失败,错误 ...
随机推荐
- java判断是移动端还是pc端
// \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔), // 字符串在编译时会被转码一次,所以是 "\\b" // \B 是单词内部逻辑间隔(连着的 ...
- Spring security 用户,角色,权限,资源
转自:http://blog.csdn.net/wybqq/article/details/52940194 关于Spring security对用户请求的处理过程 体现在这两个过程的体现. 关于用户 ...
- Java中ArrayList实现原理
简述: ArrayList可以理解为动态数组,与Java中的数组相比,它的容量能动态增长.超出限制时会增加50%容量,用System.arraycopy()复制到新的数组中,因此最好能给出数组大小的预 ...
- C语言 · 最长单词
算法提高 最长单词 时间限制:1.0s 内存限制:512.0MB 编写一个函数,输入一行字符,将此字符串中最长的单词输出. 输入仅一行,多个单词,每个单词间用一个空格隔开.单词仅由小 ...
- Tomcat的JVM和连接数设置
Tomcat的JVM和连接数设置 Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m - ...
- .net 定时启动任务
.net winform程序,设置每天的零时启动,执行完后自动关闭. 系统计划启动: 如果要定时启动某个程序,可以通过“任务计划”来安排. 如果是XP系统,在开始 --> 所有程序 --> ...
- 编写.info文件
概述 drupal用.info文件来存储主题和模块的metadata. 对于模块来说,.info文件用于: 为Drupal站点管理界面解析信息: 为模块的激活和卸载提供标准和需求: 提醒drupal一 ...
- 通过ambari安装hadoop集群(二)
开始安装,输入主机名字,然后选择私钥 注意java_home那里需要改为/usr/jdk64/jdk1.6.0_31,然后点击确认,它会出一个警告提示,别管他就行. 等待安装完毕之后,就会出现成功的提 ...
- Pycharm新建文件时自动添加基础信息
位置:File->settings->Editor->File and Code Templates->Python Script 添加以下代码: #!/usr/bin/env ...
- Redis管道传输
Redis是一个TCP服务器,并支持请求/响应协议.redis的一个请求完成需要下面的步骤: 客户端发送一个查询到服务器,并从套接字中读取,通常在封闭的方式,对服务器的响应. 服务器处理命令并将响应返 ...