检查两次相同字符的NSString

时间:2012-01-05 18:44:05

标签: iphone objective-c uitextfield

我想检查UITextfield以确保它不包含第二个小数。如何检查NSString的第二个小数?

我真正想要做的是提供一个uitextfield并且只有数字键盘,如果用户按下1 2 3 4 5 6 7 8 9它就会显示为“$ 1,234,567.89”然而我遇到了问题将字符串转换为浮点值并将结果舍入...但如果我可以确保用户不输入2位小数,我也会很好。

1 个答案:

答案 0 :(得分:3)

执行此操作的最佳方法是阻止用户输入第二个小数点。使用UITextFieldDelegate方法 - textField:shouldChangeCharactersInRange:replacementString:如下所示

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"."];

    if ([string rangeOfCharacterFromSet:set].location != NSNotFound && [textField.text rangeOfCharacterFromSet:set].location != NSNotFound) {
        return NO;
    }

    return YES;
}

现在,如果用户再次按下小数点,它将不会被添加到现有的UITextField。