-(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 > 1) return NO;
}
}
}
return YES;
}
IOS中TextField中只能输入数字,并且小数点后最多输入两位
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.设置TextField的keyboardType 为 UIKeyboardTypeDecimalPad 2.T...
- IOS中TextField中支付只能输入数字,并且小数点后最多输入两位 标签(空格分隔): 常用封装 IOS实现方...
- @property(nonatomic,assign)BOOLisHaveDian; @property(nona...
- @property(nonatomic,assign)BOOLisHaveDian; @property(nona...
- 我在优化App的时候,看到价格不能随意输入,于是就在网上找了点案例。发现有一款方法非常好,能控制你的textfie...