Я работаю над этим уже несколько дней, и с моими текстовыми полями происходят какие-то гулкие вещи ... и дошло до того, что мне нужно сделать шаг назад и надеяться, что кто-то получит свежую пару глаза могут пролить свет на ситуацию.
По сути, я делаю форматирование строки из 20 символов в наборы по 5, когда пользователь вводит после каждого 5-го символа, в строке которого появляется дефис, что прекрасно работает.
У меня есть кнопка отправки, которую нельзя просмотреть до тех пор, пока не будет введен 20-й символ, это также работает, но там, где она становится CRAZY! если вы удаляете обратно один символ, кнопка отправки все еще работает .. затем вы удаляете обратно еще один символ, и он не работает ... Я в растерянности, поскольку мои условия 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 && range.length == 0){
return NO; // return NO to not change text
}
if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) {
NSString *lastChar = [regTextField.text substringFromIndex:[regTextField.text length] - 1];
int modulus = [originalString length] % seperatorInterval;
if (![lastChar isEqualToString:separator] && 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);
}