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

效果如下:

ViewController.h

1 #import <UIKit/UIKit.h>
2
3 @interface ViewController : UIViewController<UITextFieldDelegate>
4 @property (strong, nonatomic) IBOutlet UITextField *txtLimitInput;
5
6 @end

ViewController.m

  1 #import "ViewController.h"
  2
  3 @interface ViewController ()
  4 - (void)layoutUI;
  5 - (BOOL)validateNumberByASCII:(NSString *)string;
  6 - (BOOL)validateNumberByRange:(NSString *)string;
  7 - (BOOL)validateNumberByRegExp:(NSString *)string;
  8 @end
  9
 10 @implementation ViewController
 11
 12 - (void)viewDidLoad {
 13     [super viewDidLoad];
 14
 15     [self layoutUI];
 16 }
 17
 18 - (void)didReceiveMemoryWarning {
 19     [super didReceiveMemoryWarning];
 20     // Dispose of any resources that can be recreated.
 21 }
 22
 23 - (void)layoutUI {
 24     _txtLimitInput.placeholder = @"请输入数字";
 25
 26     //第一种方式:设置键盘类型
 27     //_txtLimitInput.keyboardType = UIKeyboardTypeDecimalPad;
 28
 29     //第二种方式:通过 UITextFieldDelegate 的 shouldChangeCharactersInRange: 方法
 30     _txtLimitInput.delegate = self;
 31 }
 32
 33 #pragma mark - 三种判断字符串内容是否是有效数字的方式
 34 /**
 35  *  『ASCII码』判断字符串内容是否是有效数字
 36  *
 37  *  @param string 需要验证的字符串
 38  *
 39  *  @return 字符串内容是否是有效数字
 40  */
 41 - (BOOL)validateNumberByASCII:(NSString *)string {
 42     BOOL isValid = YES;
 43     NSUInteger len = string.length;
 44     if (len > 0) {
 45         for (NSUInteger i=0; i<len; i++) {
 46             NSUInteger asciiCode = [string characterAtIndex:i];
 47             if (asciiCode < 48 || asciiCode > 57) {
 48                 isValid = NO;
 49                 break;
 50             }
 51         }
 52     }
 53     return isValid;
 54 }
 55
 56 /**
 57  *  『字符范围』判断字符串内容是否是有效数字
 58  *
 59  *  @param string 需要验证的字符串
 60  *
 61  *  @return 字符串内容是否是有效数字
 62  */
 63 - (BOOL)validateNumberByRange:(NSString *)string {
 64     BOOL isValid = YES;
 65     NSUInteger len = string.length;
 66     if (len > 0) {
 67         NSCharacterSet *validNumberCS = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
 68         NSUInteger singleStrIndex = 0;
 69         do {
 70             NSString *singleStr = [string substringWithRange:NSMakeRange(singleStrIndex, 1)];
 71             NSRange range = [singleStr rangeOfCharacterFromSet:validNumberCS];
 72             if (range.length == 0) {
 73                 isValid = NO;
 74                 break;
 75             }
 76             singleStrIndex++;
 77         } while (singleStrIndex < len);
 78     }
 79     return isValid;
 80 }
 81
 82 /**
 83  *  『正则表达式;推荐使用,不用循环遍历,控制更灵活』判断字符串内容是否是有效数字
 84  *
 85  *  @param string 需要验证的字符串
 86  *
 87  *  @return 字符串内容是否是有效数字
 88  */
 89 - (BOOL)validateNumberByRegExp:(NSString *)string {
 90     BOOL isValid = YES;
 91     NSUInteger len = string.length;
 92     if (len > 0) {
 93         NSString *numberRegex = @"^[0-9]*$";
 94         NSPredicate *numberPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberRegex];
 95         isValid = [numberPredicate evaluateWithObject:string];
 96     }
 97     return isValid;
 98 }
 99
100 #pragma mark - UITextFieldDelegate
101 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
102     //return [self validateNumberByASCII:string];
103     //return [self validateNumberByRange:string];
104     return [self validateNumberByRegExp:string]; //推荐方式
105 }
106
107 @end

Main.storyboard

 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 2 <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">
 3     <dependencies>
 4         <deployment identifier="iOS"/>
 5         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
 6     </dependencies>
 7     <scenes>
 8         <!--View Controller-->
 9         <scene sceneID="ufC-wZ-h7g">
10             <objects>
11                 <viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
12                     <layoutGuides>
13                         <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
14                         <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
15                     </layoutGuides>
16                     <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
17                         <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
18                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
19                         <subviews>
20                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mb3-C5-UpN">
21                                 <rect key="frame" x="200" y="285" width="200" height="30"/>
22                                 <constraints>
23                                     <constraint firstAttribute="width" constant="200" id="8dl-R0-OzV"/>
24                                 </constraints>
25                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
26                                 <textInputTraits key="textInputTraits"/>
27                             </textField>
28                             <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">
29                                 <rect key="frame" x="200" y="255" width="196" height="17"/>
30                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
31                                 <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
32                                 <nil key="highlightedColor"/>
33                             </label>
34                         </subviews>
35                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
36                         <constraints>
37                             <constraint firstItem="mb3-C5-UpN" firstAttribute="centerX" secondItem="kh9-bI-dsS" secondAttribute="centerX" id="Dh5-bw-2LN"/>
38                             <constraint firstItem="mb3-C5-UpN" firstAttribute="centerY" secondItem="kh9-bI-dsS" secondAttribute="centerY" id="Lby-hq-mya"/>
39                             <constraint firstItem="mb3-C5-UpN" firstAttribute="leading" secondItem="8zf-7E-ija" secondAttribute="leading" id="SyI-SC-iNN"/>
40                             <constraint firstItem="mb3-C5-UpN" firstAttribute="top" secondItem="8zf-7E-ija" secondAttribute="bottom" constant="13" id="yuO-kC-OCZ"/>
41                         </constraints>
42                     </view>
43                     <connections>
44                         <outlet property="txtLimitInput" destination="mb3-C5-UpN" id="cYi-Ep-sWq"/>
45                     </connections>
46                 </viewController>
47                 <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
48             </objects>
49         </scene>
50     </scenes>
51 </document>
时间: 2024-10-06 19:38:34

限制 Text Field 输入的内容类型:只允许输入数字的相关文章

很实用的js限制不让输入其他字符,只让输入数字和 js生成UUID

onkeyup="this.value=this.value.replace(/\D/g,'')" js生产UUID 1 var createUUID = (function (uuidRegEx, uuidReplacer) { 2 return function () { 3 return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(uuidRegEx, uuidReplacer).toUpperCase();

使用Sharepoint Designer 2010创建外部内容类型(BCS)

在实现的环境如果你有现成的SQL数据库,如何通过Sharepoint的BCS功能,快速转换成Sharepoint List呢,使用外部内容类型,可以方便快速的实现你的要求. 1.首先先用Sharepoint Designer打开你的站点-外部内容类型. 2.点击外部内容类型 3.输入名称后单击此处发现外部数据源并定义操作 4.添加连接(这里我使用的是AdventureWordsDW来做例示),数据源类型选择SQL Server. 5.这里我选择使用用户标识进行连续. 6.这里我选择DimProd

如何实时获取DBGrid 中当前单元格输入的内容?

如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理, 用什么事件呢? 所以Field的Onchange事件是没用的. 这个问题简单啊,每输入1个数据的后就提交(并不是提交到数据库,还是在编辑状态),那么用DataSet就可以取值了 用DBGrid的KeyUp事件: procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;   Shift: TShiftState); beg

(很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]

如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理,用什么事件呢? 所以Field的Onchange事件是没用的. DBGrid1.SelectedField.AsStringDBGrid1.SelectedField.Text看你需要选择 这个问题简单啊,每输入1个数据的后就提交(并不是提交到数据库,还是在编辑状态),那么用DataSet就可以取值了用DBGrid的KeyUp事件: procedure TForm1.DBGrid1Key

《iOS Human Interface Guidelines》——Text Field

文本域 文本域接受单行的用户输入(如下所示包括目标描述和占位文本). API NOTE 查看UITextField学习更多关于定义文本域并且自定义显示图像和按钮的内容. 一个文本域: 是一个固定高度的圆角区域 当用户点击它时自动显示键盘 可以包含系统提供的按钮,比如书签按钮 可以显示使用多种风格的文本(查看UITextView学习更多关于这个的内容) 使用文本域从用户获取小数量的信息. 如果能够帮助用户理解如何使用的话,可以自定义一个文本域.比如说,你可以在文本域的左边或右边显示自定义的图片,或

第一个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都成功地没有软键盘弹出. 后来我

springmvc中只接受固定提交内容类型的请求

springmvc中的@RequestMapping注解是用来处理请求地址映射的,如果某个接口我们只接受请求的提交内容类型(Content-Type)为application/json或text/html,那可以用@RequestMapping中的consumes来定义,同样还有个produces是指定返回的内容类型.

JS控制input只允许输入的各种指定内容

1.只允许输入数字 ? 1 <input name="username" type="text" onkeyup="value=this.value.replace(/\D+/g,'')"> 2.只允许输入英文字母.数字和下划线(以下二种方法实现) ? 1 2 <input name="username" type="text" style="ime-mode:disabled&

Webservice报错客户端发现响应内容类型为“application/json;charset=UTF-8”,但应为“text/xml”。

控制台对接Webservice正常,同样的方法在Web项目上报错: 客户端发现响应内容类型为“application/json;charset=UTF-8”,但应为“text/xml”.请求失败,错误信息为:--{ "code" : "03010250002", "msg" : "Illegal json string", "data" : ""}--. 说明: 执行当前 Web 请求期