Для моментального снимка представления (_UIReplicantView), которое не было обработано хотя бы один раз, требуется afterScreenUpdates: YES - PullRequest
0 голосов
/ 14 марта 2020

Я новый программист, который все еще учится, так что простите, если мой код выглядит как дерьмо. Я пишу программу, в которой есть ViewController с именем «infoViewController» с несколькими UITextFields на нем. Предполагается, что пользователь заполняет текстовые поля, а затем нажимает кнопку «Далее» в правом верхнем углу экрана, которая затем активирует переход «Показать» и переносит их к следующему V C. Вся информация из текстовых полей хранится в константах для дальнейшего использования, когда я беру эту информацию, которую они ввели, и помещаю ее в файл .PDF, который создается в конце. Я хотел, чтобы пользователь мог легко go просматривать текстовые поля, поэтому я сделал это так, чтобы, когда пользователь находится в TextField и нажимал «Next» на своей клавиатуре, он перемещал их в следующее TextField, чтобы они могли заполнить их все быстро и легко. Проблема, с которой я сталкиваюсь, заключается в том, что по какой-то причине я продолжаю получать эту ошибку, когда нажимаю «Далее» на клавиатуре:

[Снимок] Снимок экрана для представления (0x7f89955786c0, _UIReplicantView), которое не было обработано по крайней мере один раз требует afterScreenUpdates: ДА.

Приложение все еще работает ... но я бы предпочел, чтобы ошибка вообще не отображалась на панели (в Xcode). Кроме того, когда он это делает, это похоже на то, как экран глится и мерцает белым на долю секунды (очень быстро), прежде чем перейти к следующему TextField ... какие-либо решения?

Пожалуйста, не обращайте внимания на все, что вы отвечаете начальный уровень. Спасибо!

Вот код, который я написал для переключения между TextFields:

расширение infoViewController {

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    let nextTag = textField.tag + 1

    if let nextResponder = textField.superview?.viewWithTag(nextTag) {
        nextResponder.becomeFirstResponder()
    } else {
        textField.resignFirstResponder()
    }

    return true
}

}

Я назначил делегатов TextField в " viewDidLoad «. (Например: clientTextField.delegate = self)

Я также назначил теги в "viewDidLoad". (Например: clientTextField.tag = 0)

1 Ответ

0 голосов
/ 15 марта 2020

Я бы сказал, заверните ваш звонок на

 nextResponder.becomeFirstResponder()

А также ваш звонок на

 textField.resignFirstResponder

Очень коротко delay, чтобы позволить Функция возврата, прежде чем играть с первым респондентом.

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