我有一个窗口,它显示一个带有一堆文本字段的弹出窗口。我希望这些文本字段在弹出框出现时是可选项卡但不集中的。为了实现这一点,我将第一响应者设置为nil
弹出框出现的时间:
// Inside popover's view controller.
override func viewDidAppear() {
self.view.window!.makeFirstResponder(nil)
}
这工作正常,直到弹出框被解除导致拥有窗口的第一响应者被设置为窗口本身,而不是在弹出框出现之前是第一响应者的视图。但是,如果我self.view.window!.makeFirstResponder(self.view)
在上面的块中完全触摸或不触摸第一响应者,一切都会按预期工作,并且当弹出框被解除时,拥有窗口的第一响应者会正确恢复。
据我所知,popover 内部的变化不应该影响拥有的窗口,因为 popover 有自己的窗口和自己的响应者链。
我很好奇幕后发生了什么。很确定这取决于响应者链的工作方式和更新方式,但我无法连接这些点。
–––</p>
谁能解释为什么在弹出nil
窗口被解除时更改弹出窗口内的第一响应者以弄乱拥有窗口(在其上方显示)的第一响应者?并且在使用上述解决方法时不会影响它?