正字匹配输入限制
//参数一:range,要被替换的字符串的range,如果是新输入的,就没有字符串被替换,range.length = 0
//参数二:替换的字符串,即键盘即将输入或者即将粘贴到textField的string
//返回值为BOOL类型,YES表示允许替换,NO表示不允许
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == _goodPriceTF) {
//新输入的
if (string.length == 0) {
return YES;
}
//第一个参数,被替换字符串的range
//第二个参数,即将键入或者粘贴的string
//返回的是改变过后的新str,即textfield的新的文本内容
NSString *checkStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *regex;
if (textField == _goodPriceTF) {
//正则表达式(只支持两位小数)
regex = @"^\\-?([1-9]\\d*|0)(\\.\\d{0,2})?$";
}else{
//只能输入非零的正整数( 包含0 @"^[1-9]\\d*|0$")
regex = @"^[1-9]\\d*$";
}
//判断新的文本内容是否符合要求
return [self isValid:checkStr withRegex:regex];
}
return YES;
}
//检测改变过的文本是否匹配正则表达式,如果匹配表示可以键入,否则不能键入
- (BOOL) isValid:(NSString*)checkStr withRegex:(NSString*)regex {
NSPredicate *predicte = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [predicte evaluateWithObject:checkStr];
}
FEATURED TAGS
iOS
OC
C
Xcode
MIMEType
屏幕旋转
Mac
工具
SQLite3
重命名
证书+内购
像素
pch
支付协议税务
APP转让
审核
银行卡格式化
git
描述文件
命令行
沙盒日志
i386
x86_64
控制台log
xcode10&iOS12
正则
textfield
输入限制
Pod
真机支持
封面尺寸
SDWebImage
Ruby
RVM
渐变色
jekyll
水印
富文本
标签
M3U8
动、静态库
异步上传
Url编码解码
AlertController
保活
pod报错
特定UI横竖屏
Launch版本号
ijkplayer
适配
手势
截图
网络和信号
礼物缓存
手绘礼物
UIPickerView
文件权限
键盘和菜单
耗时卡顿
国际化
Paypal
AWSS3
npm、Node
控制台
warning
扩展
防盗链
动画
分析
CallKit
侧滑
重置根控制器
播放器
裁剪
日志
bugly
uniapp
Swift
文字翻转
跨域
WebClip
网络请求
地图导航
ZSH
SPM
Vapor
导航
验证码
杀进程
Ubuntu
Android
JWT
vue
html-js
style-class
ssh
PHP
jks
css
Runtime
tree
uniCloud
圆角
总结