- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
UITextField *countTextField = self.moneyTF;
NSString *NumbersWithDot = @".1234567890";
NSString *NumbersWithoutDot = @"1234567890";
// 判断是否输入内容,或者用户点击的是键盘的删除按钮
if (![string isEqualToString:@""]) {
NSCharacterSet *cs;
if ([textField isEqual:countTextField]) {
// 小数点在字符串中的位置 第一个数字从0位置开始
NSInteger dotLocation = [textField.text rangeOfString:@"."].location;
// 判断字符串中是否有小数点
// NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在
// range.location 表示的是当前输入的内容在整个字符串中的位置,位置编号从0开始
if (dotLocation == NSNotFound ) {
// -- 如果限制非第一位才能输入小数点,加上 && range.location != 0
// 取只包含“myDotNumbers”中包含的内容,其余内容都被去掉
/*
[NSCharacterSet characterSetWithCharactersInString:myDotNumbers]的作用是去掉"myDotNumbers"中包含的所有内容,只要字符串中有内容与"myDotNumbers"中的部分内容相同都会被舍去
在上述方法的末尾加上invertedSet就会使作用颠倒,只取与“myDotNumbers”中内容相同的字符
*/
cs = [[NSCharacterSet characterSetWithCharactersInString:NumbersWithDot] invertedSet];
if (range.location >= 9) {
NSLog(@"单笔金额不能超过亿位");
if ([string isEqualToString:@"."] && range.location == 9) {
return YES;
}
return NO;
}
}else {
cs = [[NSCharacterSet characterSetWithCharactersInString:NumbersWithoutDot] invertedSet];
}
// 按cs分离出数组,数组按@""分离出字符串
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
BOOL basicTest = [string isEqualToString:filtered];
if (!basicTest) {
NSLog(@"只能输入数字和小数点");
return NO;
}
if (dotLocation != NSNotFound && range.location > dotLocation + 2) {
NSLog(@"小数点后最多两位");
return NO;
}
if (textField.text.length > 11) {
return NO;
}
}
}
return YES;
}
iOS金额输入限制
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- #pragma mark UITextField 比较蠢的一种方法 - (BOOL) textField:(UIT...
- 判断输入钱的正则表达式,可输入正负,小数点前5位,小数点后2位,位数可控 UItextField 代理方法 -(B...
- 四行代码搞定金额输入限制 做支付的时候,不免要进行金额、价格的输入,但在输入的时候,如果可以实现相应的限制,使其只...
- 序言:我们经常需要定位测试人员或者客户(已上线app)的app使用crach log,并作出修复。收集crash ...