/**
* textField的代理方法,监听textField的文字改变
* textField.text是当前输入字符之前的textField中的text
*
* @param textField textField
* @param range 当前光标的位置
* @param string 当前输入的字符
*
* @return 是否允许改变
*/
#pragma mark - textField的代理方法,监听textField的文字改变
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
/*
* 不能输入.0-9以外的字符。
* 设置输入框输入的内容格式
* 只能有一个小数点
* 小数点后最多能输入两位
* 如果第一位是.则前面加上0.
* 如果第一位是0则后面必须输入点,否则不能输入。
*/
BOOL isHaveDian;
//第1位必须是.
if (string.length > 0) {
if([textField.text length]==0){
unichar single = [string characterAtIndex:0];
if (string.length > 0) {
if (!(single >= '0' && single <= '9') ){
return NO;
}
}
}
}
//第二位必须是.
if (string.length > 0) {
if([textField.text length]==1){
NSString *str1 = [string substringToIndex:1];
if (string.length > 0) {
if (![str1 isEqual:@"."]){
return NO;
}
}
}
}
// 判断是否有小数点
if ([textField.text containsString:@"."]) {
isHaveDian = YES;
}else{
isHaveDian = NO;
}
//当前输入的字符
if (string.length > 0) {
//当前输入的字符
unichar single = [string characterAtIndex:0];
// 不能输入.0-9以外的字符
if (!((single >= '0' && single <= '9') || single == '.')){
return NO;
}
// 只能有一个小数点
if (isHaveDian && single == '.') {
return NO;
}
//判断小数点的位数
NSRange ran=[textField.text rangeOfString:@"."];
NSInteger tt=range.location-ran.location;
if (tt <= 3){
return YES;
}else{
return NO;
}
}
return YES;
}