Странная ошибка при представлении контроллера представления - PullRequest
0 голосов
/ 04 октября 2018

У меня есть базовое приложение с UITabBarController в качестве контроллера корневого представления.Когда пользователь приложения не вошел в систему, я показываю модальный контроллер через window!.rootViewController!.present(viewController, animated: true) в моем AppDelegate.Это прекрасно работает на всех моделях iPhone, однако на любом iPad происходит следующее:

broken

Цвет фона SignInController виден во время перехода.Теперь возникает странная вещь: когда я меняю представление в Интерфейсном Разработчике на iPad, ошибка исчезает так:

working

Изменение цвета фона обратнодля прозрачного значения по умолчанию удаляется, по крайней мере, белый фон, однако вид по-прежнему анимируется слева внизу, чего я не хочу.И, кстати, изменение представления в Интерфейсном Разработчике ломает анимацию на всех iPhone.Если его изменить, то это исправит, но снова сломает все iPad.

Это код (использующий ReSwift для управления состоянием):

func newState(state: State) {
  switch (previousState.session, state.session) {
  case (.loading, .notSignedIn), (.signedIn, .loading):
      (window!.rootViewController! as! UITabBarController).selectedIndex = 0

      let viewController = storyboard.instantiateViewController(withIdentifier: "SignInViewController")
      window!.rootViewController!.present(viewController, animated: true, completion: nil)

  default:
    // more stuff
    break
  }
}

РЕДАКТИРОВАТЬ : добавлен фактический код.

1 Ответ

0 голосов
/ 08 октября 2018

Я исправил это!100

Проблема заключалась в комбинации наблюдателя на keyboardWillShowNotification и becomeFirstResponder в методе viewWillAppear представленного контроллера.

Перемещение becomeFirstResponder в viewDidAppear исправлены все проблемы!

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