J'ai créé un UIViewController personnalisé avec un UITextField sur Storyboard. Sur viewDidLoad
, j'ai défini UITextFIeld sur becomeFirstResponder
, il ne s'est rien passé (aucun clavier n'a surgi).
J'ai ensuite essayé d'appeler resignFirstResponder()
, mais cela a renvoyé false. Ensuite, j'ai essayé de trouver qui le first responder
consiste à boucler toutes les sous-vues en utilisant le code via @ Obtenez le premier répondeur actuel sans utiliser d'API privée . Il s'avère qu'aucune des vues secondaires n'est le premier répondant.
Mon ViewController dans le storyboard
Mon code
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.
}
}
Aussi simple que possible ... POURQUOI LE CLAVIER N'EST PAS EN COURS !!! Une chose que j'ai sur la mise en page automatique, mais je ne sais pas si cela affecte le pop-up du clavier.
Je viens de le tester avec un champ de texte en appelant la fonction self.tf.becomeFirstResponder()
indside viewDidLoad()
et son fonctionnement est absolument parfait. Vous devrez basculer votre clavier en appuyant sur commande + K comme nflacco vient de le signaler et désactiver le clavier matériel dans le simulateur comme:
Swift 4 cela a fonctionné pour moi
l'essayer
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
DispatchQueue.main.async {
self.textView.becomeFirstResponder()
}
}
Je pense
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()
}
}
Swift 4 et iOS 11
Dans mon cas, peu importe ce que j'ai essayé, je n'ai pas pu définir le premier répondeur avant d'avoir essayé.
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()
}
}
}
J'espère que cela aidera quelqu'un coincé avec le même problème.
appuyez sur commande + shift + k pour ouvrir le clavier.