数字键盘没有“.”。在类似的情况下,我使用了数字和标点键盘,并且必须实现 UITextFieldDelegate 方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
在那里,我阻止了任何不是数字或“。”的字符。
我的代码如下。这个想法来自stackoverflow上的另一个答案,但我现在找不到它,所以向提供它的人致敬。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string length] == 0)
return YES;
if ([textField keyboardType]==UIKeyboardTypeNumbersAndPunctuation)
{
NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@"."];
NSCharacterSet *numberSet = [NSCharacterSet decimalDigitCharacterSet];
[_alnum formUnionWithCharacterSet:numberSet];
NSCharacterSet *nonNumberSet = [_alnum invertedSet];
return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0);
}else{
return YES;
}
}
在同样的方法中,您可以以类似的方式检查 textField.text 以查看小数点后有多少位并阻止输入更多