#iphone #if-statement #nsstring #uitextfield
#iPhone #if-оператор #nsstring #uitextfield
Вопрос:
Я работаю над этим уже несколько дней, и у меня возникают некоторые проблемы с моими текстовыми полями … и дошло до того, что мне нужно сделать шаг назад и надеяться, что кто-то со свежим взглядом сможет пролить свет на ситуацию.
по сути, что я делаю, так это форматирую строку из 20 символов в наборы по 5, поскольку пользователь вводит после каждого 5-го символа дефис, вставляемый в строку, что отлично работает.
У меня есть кнопка отправки, которую нельзя просмотреть, пока не будет введен 20-й символ, это тоже работает, но там, где это сводит с ума! если вы удалите обратно один символ, кнопка отправки все еще будет работать.. затем вы удаляете обратно еще один символ, и он не работает… Я в растерянности, поскольку мои условия операторов if работают не так, как они должны, я указываю == 23 символа, и вам нужно нажать одну из клавиш 24 раза, чтобы попасть в это утверждение .. это не имеет логического смысла.
в любом случае, если бы вы могли помочь мне с первым вопросом, это было бы здорово, тогда, если у вас есть какие-либо идеи по второму вопросу, это было бы здорово.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *separator = @"-";
int seperatorInterval = 5; //how many chars between each hyphen
NSString *originalString = [regTextField.text stringByReplacingOccurrencesOfString:separator withString:@""];
if (textField.text.length == 23 amp;amp; range.length == 0){
return NO; // return NO to not change text
}
if (![originalString isEqualToString:@""] amp;amp; ![string isEqualToString:@""]) {
NSString *lastChar = [regTextField.text substringFromIndex:[regTextField.text length] - 1];
int modulus = [originalString length] % seperatorInterval;
if (![lastChar isEqualToString:separator] amp;amp; modulus == 0) {
regTextField.text = [regTextField.text stringByAppendingString:separator];
}
}
[self validateTextFields];
return YES; //Keep accepting input from the user
}
//Validating text field to see if Submit button can be pressed or not
-(IBAction) validateTextFields {
NSString *intString = [NSString stringWithFormat:@"%d", regTextField.text.length];
NSLog(@"Starting %@", intString);
if (regTextField.text.length < 22){
[submitButton setEnabled:NO]; //enables submitButton
}
else {
regTextField.text = [regTextField.text substringToIndex:22];
[submitButton setEnabled:YES]; //disables submitButton
}
intString = [NSString stringWithFormat:@"%d", regTextField.text.length];
NSLog(@"Done %@", intString);
}
Ответ №1:
Вам нужно добавить =
знак в этот оператор if
if (regTextField.text.length <= 22){
или просто измените число на 23, в любом случае это должно сработать
if (regTextField.text.length < 23){