[英]Swift: Become First Responder on UITextField Not Working?
我在 Storyboard 上創建了一個帶有一個 UITextField 的自定義 UIViewController。 在viewDidLoad
,我將 UITextFIeld 設置為becomeFirstResponder
,什么也沒發生(沒有鍵盤彈出)。
然后我嘗試調用resignFirstResponder()
,但它返回 false。 接下來,我嘗試通過使用代碼循環所有子視圖來查找first responder
是誰, 而不是使用私有 API 獲取當前第一響應者。 事實證明,沒有一個子視圖是第一響應者。
我在故事板中的 ViewController
我的代碼
class BLTestViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var tf: UITextField
override func viewDidLoad() {
super.viewDidLoad()
tf.delegate = self
tf.becomeFirstResponder()
// Do any additional setup after loading the view.
}
}
就這么簡單……為什么鍵盤沒有出現!!! 我所做的一件事是自動布局,但我不確定這是否會影響鍵盤彈出。
Swift 4 對我有用
嘗試一下
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
textView.becomeFirstResponder()
}
我只是通過調用self.tf.becomeFirstResponder()
indside viewDidLoad()
函數使用文本字段對其進行了測試,並且它的工作非常好。 正如 nflacco 剛剛指出的那樣,您需要通過按command + K來切換鍵盤,並禁用模擬器中的硬件鍵盤,如下所示:
我認為
class BLTestViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var tf: UITextField
override func viewDidLoad() {
super.viewDidLoad()
tf.delegate = self
self.focustf()
// Do any additional setup after loading the view.
}
func focustf(){
self.tf.becomeFirstResponder()
}
}
斯威夫特 4 和 iOS 11
就我而言,無論我嘗試過什么,在嘗試此操作之前,我都無法設置第一響應者。
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if cell.isKind(of: YOURTABLEVIEWCELL.self) {
if let yourCell = cell as? YOURTABLEVIEWCELL{
yourCell.yourUiTextField.becomeFirstResponder()
}
}
}
希望這可以幫助遇到同樣問題的人。
按 command+shift+k 打開鍵盤。
試試這個
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
textField.becomeFirstResponder()
}
有時錯誤的是渲染視圖的時間
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.