UITextField的keyboardType設置:
UIKeyboardTypeNumberPad沒有“.”
UIKeyboardTypeDecimalPad有“.”。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (string.length)
{
unichar single = [string characterAtIndex:0]; // 當前輸入的字符
if ((single >= '0' && single <= '9') || single == '.') // 數據正確
{
// 首位不能爲小數點
if (!textField.text.length) // 還沒有輸入,首位
{
if (single == '.')
{
return NO;
}
return YES;
}
else
{
// 不是首位,判斷其他
NSRange pointRange = [textField.text rangeOfString:@"."];
if (pointRange.length)
{
// 存在點,小數點之後2位
if (textField.text.length - pointRange.location > 2 || single == '.')
{
return NO;
}
return YES;
}
else
{
// 不存在點
if (![textField.text floatValue])
{
// 等於0,只能輸入點
if (single == '.')
{
return YES;
}
return NO;
}
else
{
// 大於0,最大5位數
if (textField.text.length >= 5 && single != '.')
{
return NO;
}
return YES;
}
}
}
}
return NO;
}
return YES;
}