i am trying to get total value after multiplying price and quantity in to text field. I not getting value when quantity is 10 or having any two or three digits.This method takes only one character at time.
- (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;
}
You’re only using the replacementString value for your calculation, which is the last character that was typed, not the whole the whole string.
So if I type ‘1’ then function uses 1 as the value, then if I type ‘0’ to make 10, your function only uses the ‘0’ as the value.
You need to get the whole text of the quantityText textfield and use that. You could get that by taking textField.text and then replacing the specified range with the replacementString.
To be honest though it’s a lot easier just to register for the
UITextFieldTextDidChangeNotificationinstead of using thetextfield:shouldChangeCharactersInRange:replacementString:method.See this answer for details.