限制 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”.请求失败,错误 ...
随机推荐
- Delphi实现RGB色环的代码绘制(XE10.2+WIN764)
相关资料: http://blog.csdn.net/tokimemo/article/details/18702689 http://www.myexception.cn/delphi/215402 ...
- BAT-增加JAVA环境变量(WIN764位)
相关资料:1.http://www.jb51.net/article/52756.htm2.http://blog.csdn.net/fireghost57/article/details/21103 ...
- 真机调试报错error ==Error Domain=NSURLErrorDomain Code=-1009 "似乎已断开与互联网的连接。"
真机调试报错error ==Error Domain=NSURLErrorDomain Code=-1009 "似乎已断开与互联网的连接." 请注意,错误代码是-1009,网上关于 ...
- [转]BigDecimal不整除异常
通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的 异 常 :java.lang.ArithmeticException: Non-terminatin ...
- u-boot的配置
1 sama5d31dk sama5d3_xplained:SAMA5D3,SYS_USE_NANDFLASH ...
- OpenCV 图像处理的各种滤镜效果实现
引自:https://blog.csdn.net/column/details/stylizefliter.html 学习OpenCV:滤镜系列(15)——羽化(模糊边缘) 在PHOTOSHOP里,羽 ...
- Selenium (1) —— Selenium安装与测试(101 Tutorial)
Selenium (1) -- Selenium安装与测试(101 Tutorial) jvm版本: 1.8.0_65 selenium版本: v2.48.0 (Standalone Selenium ...
- 【驱动】——错误: 初始值设定项里有未知的字段‘ioctl’
这个错误网上搜索发现3.0.0.15版本内核 file_operation结构体已经删除了ioctl函数,取代的是: long (*unlocked_ioctl) (struct file *, un ...
- 从PCD文件写入和读取点云数据
(1)学习向PCD文件写入点云数据 建立工程文件ch2,然后新建write_pcd.cpp CMakeLists.txt两个文件 write_pcd.cpp : #include <iostr ...
- 使用STC-ISP向KEIL添加STC芯片头文件
第一步:打开“STC-ISP”软件. 第二步:点击右手边“Keil仿真设置”,然后点击“添加型号和头文件到Keil中添加STC仿真器驱动到Keil中”. 第三步:在弹出的“浏览文件夹”对话框中,找到你 ...