要求:
1.第一个首字母不能是小数点
2.最大限制是10000
3.保留小数点后两位
<
UITextFieldDelegate
>
_testText
.
delegate
=
self
;
- (
BOOL
)textField:(
UITextField
*)textField shouldChangeCharactersInRange:(
NSRange
)range replacementString:(
NSString
*)string {
NSString
*amountText =
_testText
.
text
;
NSString
*regStr =
@"^([1-9][\\d]{0,100}|0)(\\.[\\d]{0,1})?$"
;
NSPredicate
*predicate = [
NSPredicate
predicateWithFormat
:
@"SELF MATCHES %@"
, regStr];
BOOL
match = [predicate
evaluateWithObject
:amountText];
if
([string
isEqualToString
:
@""
])
return
YES
;
//始终允许用户删除
unichar
single = [string
characterAtIndex
:
0
];
//当前输入的字符
if
([textField.
text
length
] ==
0
){
if
(single ==
'.'
) {
[
SVProgressHUD
showErrorWithStatus
:
@"第一个数字不能为小数点"
];
[textField.
text
stringByReplacingCharactersInRange
:range
withString
:
@""
];
return
NO
;
}
}
NSString
*tmpStr = [amountText
stringByAppendingString
:string];
NSString
*numStr = [[tmpStr
componentsSeparatedByString
:
@"."
]
firstObject
];
NSInteger
amount = [numStr
integerValue
];
if
(([amountText
integerValue
] ==
10000
) && (![string
isEqualToString
:
@""
]))
return
NO
;
BOOL
result = [amountText
isEqualToString
:
@""
] ?
YES
: (match && ((amount <=
10000
) || [string
isEqualToString
:
@"."
]));
return
result;
}