UITextField 输入金额,小数点的控制输入
#pragma mark --- UITextFieldDelegate ---
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// 判断是否有小数点
if ([textField.text containsString:@"."]) {
self.isHaveDian = YES;
}else{
self.isHaveDian = NO;
}
if (string.length > 0) {
//当前输入的字符
unichar single = [string characterAtIndex:0];
// 不能输入.0-9以外的字符
if (!((single >= '0' && single <= '9') || single == '.'))
{
return NO;
}
// 只能有一个小数点
if (self.isHaveDian && single == '.') {
return NO;
}
// 如果第一位是.则前面加上0.
if ((textField.text.length == 0) && (single == '.')) {
textField.text = @"0";
}
// 如果第一位是0则后面必须输入点,否则不能输入。
if ([textField.text hasPrefix:@"0"]) {
if (textField.text.length > 1) {
NSString *secondStr = [textField.text substringWithRange:NSMakeRange(1, 1)];
if (![secondStr isEqualToString:@"."]) {
return NO;
}
}else{
if (![string isEqualToString:@"."]) {
return NO;
}
}
}
// 小数点后最多能输入两位
if (self.isHaveDian) {
NSRange ran = [textField.text rangeOfString:@"."];
// 由于range.location是NSUInteger类型的,所以这里不能通过(range.location - ran.location)>2来判断
if (range.location > ran.location) {
if ([textField.text pathExtension].length > 5) {
return NO;
}
}
}
}
return YES;
}
最新文章
- 3.EF 6.0 Code-First实现增删查改
- 《Web全栈工程师的自我修养》读书笔记(转载)
- 2-4. Using auto with Functions
- Redis脚本插件之————执行Lua脚本示例
- Eclipse项目 迁移到 Intellj IDEA
- 1.AJAX简介
- (转)Iphone数组一些基础操作 NSArray/NSMutableArray
- 降低成本是永恒的追求(xamarin)
- Xps实现文档显示、套打功能
- python str的一些方法
- Centos7-卸载自带的jdk 安装jdk8
- 夏令营提高班上午上机测试 Day 2 解题报告
- java网络编程(3)——UDP
- Tiny4412之串口(Uart)驱动编写
- 【设计模式】桥接模式 Bridge Pattern
- c++常用
- CF1029E
- 虚拟机安装及Oracle安装
- FFmpeg流媒体处理-收流与推流
- python套接字编程基础
热门文章
- 使用百度ocr接口识别验证码
- Window下安装Scala出现:此时不应有 \scala\bin\..\lib\jline-2.14.5.jar
- opencv 之 transformation
- NABCD-课程表开发
- css,html备忘录
- C++读取与保持图片
- oracle数值函数 abs()、 ceil()、 cos()、 cosh()
- NIO学习笔记
- 使用css3实现动画来开启GPU加速
- 合并回文子串(区间dp)