gpt4 book ai didi

iOS( swift ): UITextField is **not** first responder after becomeFirstResponder method is called?

转载 作者:搜寻专家 更新时间:2023-11-01 06:01:04 24 4
gpt4 key购买 nike

我在 UIViewController 中有一个 UITextField 数组:

@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
var textFields: [UITextField] {
return [textField1, textField2]
}

在我的 viewDidLoad 方法中,我将 textFields 数组的第一个元素设置为第一响应者并将它们的所有委托(delegate)设置如下:

override func viewDidLoad() {
super.viewDidLoad()

textFields[0].becomeFirstResponder()
textFields.forEach({ $0.delegate = self })

print(textFields.map({ $0.isFirstResponder })) // [false, false]

}

但是,viewDidLoad 中的 print 语句打印出 [false, false] 而不是我预期的 [true, false] .为什么?

谢谢

最佳答案

您运行此代码的时间过早。在 viewDidLoad 期间,没有文本字段可以成为第一响应者,因为界面中甚至还没有文本字段。

换句话说,尝试将您的代码更改为:

print(textFields.map({ $0.window == nil }))

您将得到 [true, true],证明文本字段尚未出现在任何窗口中。但是第一响应者状态是基于窗口的;自由 float 的文本字段不能成为第一响应者。

关于iOS( swift ): UITextField is **not** first responder after becomeFirstResponder method is called?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50627555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com