Неустранимое исключение: NSRangeException NSMutableRLEArray replaceObjectsInRange: withObject: length :: Вне границ - PullRequest
0 голосов
/ 08 июля 2019

enter image description here

Вот мой код:

- (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-х значных отп. я разрешаю пользователю вводить только цифры в текстовые поля. одно число в одном текстовом поле.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...