J'ai une application de projet parallèle qui utilise un UIAlertController avec une zone de texte pour obtenir des informations de l'utilisateur. Mon problème est, quand un utilisateur entre le texte et appuie sur «Ajouter», le clavier reste ouvert pendant 1-3 bonnes secondes avant de le renvoyer. Toutefois, si l'utilisateur appuie sur la touche de retour avec le texte entré dans la zone de texte sur le clavier, cela ne se produit pas. Au départ, je pensais que c'était en utilisant les gestionnaires de complétion et en attendant que cela se termine, mais puisque l'utilisation de la touche de retour fonctionne bien, je ne pense pas que ce soit le cas.Laps de clavier lors de l'utilisation de UIAlertController
C'est là que j'affiche l'alerte:
func addItem(view: UIViewController, completion: (text: String?) -> Void) {
let diag = UIAlertController(title: "Add Task", message: "Enter a task name", preferredStyle: .Alert)
diag.addTextFieldWithConfigurationHandler({ (textField) -> Void in })
diag.addAction(UIAlertAction(title: "Add", style: .Default, handler: { (action) -> Void in
let textOfTask = diag.textFields![0] as UITextField
let textValue = textOfTask.text!
if textValue.characters.count > 0 {
completion(text: textValue)
}
}))
diag.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
completion(text: nil)
}))
view.presentViewController(diag, animated: true, completion: nil)
}
Et comment je fais appel de cette fonction est:
@IBAction func didPressAdd(sender: AnyObject) {
addItem(self) {
(text) in
if let itemText = text {
// Check if has all the datas
if (self.def.objectForKey("simplest_itemlist") != nil) {
// Does have all the datas
self.tableView.reloadData()
}
// Append new data
self.itemList.append(itemText)
self.tableView.reloadData()
// Save to UserDefaults
self.def.setObject(self.itemList, forKey: "simplest_itemlist")
self.def.synchronize()
print(self.itemList)
}
}
}
Wow c'est très frustrant .. Je ne peux pas imaginer pourquoi cela serait mis en œuvre. Y a-t-il un moyen de contourner ceci? Puis-je d'une manière ou d'une autre retourner le texte saisi en utilisant SEULEMENT le bouton de retour du clavier? Je n'ai pas trouvé un moyen de faire cela – dsch
Je me suis résigné au petit retard, en reconnaissant que (1) beaucoup de gens peuvent simplement utiliser le bouton du clavier fait et (2) les utilisateurs ne seront probablement pas dérangés par cela. Si vous voulez descendre la route sombre de la simulation d'un utilisateur en appuyant sur un bouton du clavier, il y a des dragons. – sschale
C'est vrai. J'utilise le bouton du clavier presque toujours s'il est disponible. Cela me gêne simplement que cela existe et si un utilisateur utilise réellement le bouton, il doit s'en occuper. Merci néanmoins pour l'info! – dsch