我正在使用以下textfield delegate
来验证用户输入。
假设currentTotal
等于30.00
美元,并且每当用户输入two times
等于或大于currentTotal
且我试图发出警报时。
当我测试该应用程序时,当用户输入63
美元时,不会发生警报,但是只要用户输入630
美元,就会发出警报。tip
和currentTotal
是double
。
我在做什么错,有什么建议吗?
- (BOOL)textField:(UITextField *)aTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([aTextField.text containsString:@"$"])
{
tip = [[aTextField.text stringByReplacingOccurrencesOfString:@"$" withString:@""] doubleValue];
}
else
{
tip = [aTextField.text doubleValue];
}
if(tip > currentTotal *2)
{
[self presentViewController:[AppConstant oneButtonDisplayAlert:@"Error" withMessage:@"Please enter valid tip"] animated:YES completion:nil];
}
return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.tipTF.text = @"$ ";
}
最佳答案
您使用的方法是-textView:shouldChangeCharactersInRange:replacement
。应该表示该操作即将执行,但尚未执行。因此,从文本字段获取值,您将获得旧值。
如果您想知道新值,则必须自己在方法中替换替换项(复制字符串值)。
NSString *newValue = [aTextField.text stringByReplacingCharactersInRange:range withString:string];
double tip = [newValue doubleValue]; // Where does your var tip comes from?