Вот мой код:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *resultString = [textField.text stringByReplacingCharactersInRange:range withString:string];
BOOL isPressedBackspaceAfterSingleSpaceSymbol = [string isEqualToString:@""] && [resultString isEqualToString:@""] && range.location == 0 && range.length == 1;
if (isPressedBackspaceAfterSingleSpaceSymbol) {
if (textField == self.txt1 ) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.txt1 resignFirstResponder];
});
} else if (textField == self.txt2 ) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.txt1 becomeFirstResponder];
});
} else if (textField == self.txt3 ) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.txt2 becomeFirstResponder];
});
} else if (textField == self.txt4) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.txt3 becomeFirstResponder];
});
}
} else {
dispatch_async(dispatch_get_main_queue(), ^{
if (textField == self.txt1 ) {
dispatch_async(dispatch_get_main_queue(), ^{
self.txt1.text = string;
[self.txt2 becomeFirstResponder];
});
if (self.txt1.text.length == 1) {
[self.txt2 becomeFirstResponder];
}
} else if (textField == self.txt2 ) {
dispatch_async(dispatch_get_main_queue(), ^{
self.txt2.text = string;
[self.txt3 becomeFirstResponder];
});
if (self.txt2.text.length == 1) {
[self.txt3 becomeFirstResponder];
}
} else if (textField == self.txt3 ) {
dispatch_async(dispatch_get_main_queue(), ^{
self.txt3.text = string;
[self.txt4 becomeFirstResponder];
});
if (self.txt3.text.length == 1) {
[self.txt4 becomeFirstResponder];
}
} else if (textField == self.txt4) {
dispatch_async(dispatch_get_main_queue(), ^{
self.txt4.text = string;
[self.txt4 resignFirstResponder];
});
if (self.txt4.text.length == 1) {
[self.txt4 resignFirstResponder];
}
}
});
}
return true;
}
Я сталкиваюсь с вне пределов ошибка. я не знаю как.
сбой, показывающий номер строки 186, которая self.txt1.text = string;
Примечание: - Это мой контроллер представления OTP. у меня есть 4 текстовых поля для 4-х значных отп. я разрешаю пользователю вводить только цифры в текстовые поля. одно число в одном текстовом поле.
Спасибо.