我试图在将价格和数量乘以文本字段后获得总值(value)。当数量为 10 或有任何两位或三位数字时,我没有得到值。这种方法一次只需要一个字符。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
{
if(textField == quantityText)
{
NSCharacterSet *charactersToRemove =[[ NSCharacterSet alphanumericCharacterSet ]
invertedSet];
NSRange inRange=[string rangeOfCharacterFromSet:charactersToRemove];
if(inRange.location != NSNotFound)
{
quantityText.text =[ quantityText.text
stringByTrimmingCharactersInSet:charactersToRemove ];
return NO;
}
if ([textField text] )
{
float quantity = [string floatValue];
float price = [[priceLabel text] floatValue];
float h = quantity * price;
amountText.text=[NSString stringWithFormat:@"%f",h];
}
else
{
return NO;
}
}
return YES;
}
最佳答案
您只使用 replacementString 值进行计算,这是键入的最后一个字符,而不是整个字符串。
因此,如果我键入“1”,函数将使用 1 作为值,然后如果我键入“0”得到 10,您的函数将仅使用“0”作为值。
您需要获取 quantityText 文本字段的全部文本并使用它。您可以通过获取 textField.text 然后用 replacementString 替换指定的范围来获得它。
老实说,注册 UITextFieldTextDidChangeNotification
而不是使用 textfield:shouldChangeCharactersInRange:replacementString:
方法要容易得多。
参见 this answer了解详情。
关于iphone - shouldChangeCharactersInRange 一次只取一位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9174280/