iOS最完美的UITextField中輸入金額昔逗,只能輸入數(shù)字和小數(shù)點,保留兩位小數(shù)點且0放在首位
@property (nonatomic, assign) BOOL isHaveDian;
@property (nonatomic, assign) BOOL isFirstZero;
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == self.amountTextField) {
if ([textField.text rangeOfString:@"."].location==NSNotFound) {
_isHaveDian = NO;
}
if ([textField.text rangeOfString:@"0"].location==NSNotFound) {
_isFirstZero = NO;
}
if ([string length]>0)
{
unichar single=[string characterAtIndex:0];//當前輸入的字符
if ((single >='0' && single<='9') || single=='.')//數(shù)據(jù)格式正確
{
if([textField.text length]==0){
if(single == '.'){
//首字母不能為小數(shù)點
return NO;
}
if (single == '0') {
_isFirstZero = YES;
return YES;
}
}
if (single=='.'){
if(!_isHaveDian)//text中還沒有小數(shù)點
{
_isHaveDian=YES;
return YES;
}else{
return NO;
}
}else if(single=='0'){
if ((_isFirstZero&&_isHaveDian)||(!_isFirstZero&&_isHaveDian)) {
//首位有0有.(0.01)或首位沒0有.(10200.00)可輸入兩位數(shù)的0
if([textField.text isEqualToString:@"0.0"]){
return NO;
}
NSRange ran=[textField.text rangeOfString:@"."];
int tt=(int)(range.location-ran.location);
if (tt <= 2){
return YES;
}else{
return NO;
}
}else if (_isFirstZero&&!_isHaveDian){
//首位有0沒.不能再輸入0
return NO;
}else{
return YES;
}
}else{
if (_isHaveDian){
//存在小數(shù)點恋追,保留兩位小數(shù)
NSRange ran=[textField.text rangeOfString:@"."];
int tt= (int)(range.location-ran.location);
if (tt <= 2){
return YES;
}else{
return NO;
}
}else if(_isFirstZero&&!_isHaveDian){
//首位有0沒點
return NO;
}else{
return YES;
}
}
}else{
//輸入的數(shù)據(jù)格式不正確
return NO;
}
}else{
return YES;
}
}
return YES;
}
原文鏈接:http://blog.csdn.net/shiningchen322/article/details/51673848