UITextField 输入金额判断 ,最大九位数 ,小数点后只

2016-12-23  本文已影响330人  昊楷
定义第一位是否为

BOOL _dot;




// 清除文字按钮点击事件

- (BOOL)textFieldShouldClear:(UITextField *)textField {

// NSLog(@"清除输入内容了");

_dot = NO;

return YES;

}

// 判断是否输入内容,或者用户点击的是键盘的删除按钮

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

// 判断是否输入内容,或者用户点击的是键盘的删除按钮

if (![string isEqualToString:@""]) {

if (textField == _enterAmount) {

// 小数点在字符串中的位置 第一个数字从0位置开始

NSInteger dotLocation = [textField.text rangeOfString:@"."].location;

// 判断字符串中是否有小数点,并且小数点不在第一位

// NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在

// range.location 表示的是当前输入的内容在整个字符串中的位置,位置编号从0开始

if (dotLocation == NSNotFound && range.location != 0) {

// 取只包含“myDotNumbers”中包含的内容,其余内容都被去掉

if (range.location >= 9) {

NSLog(@"单笔金额不能超过亿位");

if ([string isEqualToString:@"."] && range.location == 9)

{

return YES;

}

return NO;

}else{

if (_dot ==YES)

{

if ([string isEqualToString:@"."])

{

return YES;

}

return NO;

}else{

NSString *first = [textField.text substringFromIndex:0];

if ([first isEqualToString:@"0"])

{

if ([string isEqualToString:@"."])

{

return YES;

}

return NO;

}else{

return YES;

}

}

}

}else {

if ([string isEqualToString:@"."]){

NSString *first = [textField.text substringFromIndex:0];

if ([first isEqualToString:@"0"]) {

_enterAmount.text = @"0";

}else if ([first isEqualToString:@""]){

_enterAmount.text = @"0";

}else{

if ([string isEqualToString:@"."]){

return NO;

}

return YES;

}

}

if ([string isEqualToString:@"0"]){

_dot =YES;

}else{

_dot =NO;

}

}

if (dotLocation != NSNotFound && range.location > dotLocation + 2) {

return NO;

}

if (textField.text.length > 11) {

return NO;

}


}

}

return YES;

}

Git地址
https://github.com/tanghk/text.git

上一篇下一篇

猜你喜欢

热点阅读