У меня есть окно, которое представляет поповер с кучей текстовых полей.Я хочу, чтобы эти текстовые поля были табулируемыми, но не фокусировались при появлении всплывающего окна.Чтобы добиться этого, я устанавливаю для первого респондента значение nil
, когда появляется всплывающее окно:
// Inside popover's view controller.
override func viewDidAppear() {
self.view.window!.makeFirstResponder(nil)
}
Это работает до тех пор, пока всплывающее окно не будет закрыто, в результате чего первый респондент-владелец окна будет установлен на само окно., а не мнение, которое было первым респондентом до появления поповера.Однако, если я выполняю self.view.window!.makeFirstResponder(self.view)
или вообще не касаюсь первого респондента в вышеуказанном блоке, все работает, как ожидалось, и первый респондент окна-владельца восстанавливается правильно, когда всплывающее окно отклоняется.
МоемуИзменения в знаниях внутри всплывающего окна не должны влиять на собственное окно, поскольку у всплывающих окон есть собственные окна с собственными цепочками респондента.
Мне очень любопытно, что происходит за кулисами.Я уверен, что все сводится к тому, как работает цепочка респондента и обновляется, но я не могу соединить точки.
–––
Может кто-нибудь объяснить, почему изменение первого респондента внутри поповера на nil
портит первый респондент окна-владельца (над которым он отображается), когда поповер увольняется?И не влияет на это при использовании вышеупомянутого обходного пути?