![](/img/trans.png)
[英]UITextField resigns first responder right after I call becomeFirstResponder when I use ReactiveKit/Bond
[英]iOS (Swift): UITextField is **not** first responder after becomeFirstResponder method is called?
我在UIViewController
有一個數組UITextField
:
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
var textFields: [UITextField] {
return [textField1, textField2]
}
在我的viewDidLoad
方法中,我將textFields
數組的第一個元素設置為第一個響應者,並將其所有委托設置如下:
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]
,證明文本字段尚未在任何窗口中。 但是第一響應者的狀態是基於窗口的; 自由浮動文本字段不能是第一響應者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.