Utilisation d'un UiseearchBar avec showcancelbutton = Oui sur iOS 5. J'aimerais que le bouton Annuler soit activé lorsque le clavier tombe en panne. L'utilisation du code suivant semble ne pas fonctionner: La sous-vision est en réalité un uinavigationbutton qui semble ne pas être sous-classé d'Uibutton. Qu'est-ce que j'oublie ici??????? Vous ne pouvez également trouver aucune information sur la classe UinavigationButton dans les documents Apple. P> P>
6 Réponses :
Je devais résoudre le même problème dans ma candidature. Essayez de faire votre code ci-dessus après un délai fractionnel, par exemple C'est moche, mais c'est ce qu'il a fallu au travail pour moi. Sinon, si vous utilisez réellement un UisearchDisplayController pour afficher les résultats, il devrait également corriger le comportement du bouton Annuler pour vous (je pense - j'ai moins plongé dans ce numéro). P> P>
Cela fonctionne comme une magie .. @ Kurt pouvez-vous me dire d'où vous avez ceci? Incroyable..uppoté
Juste pour améliorer ce que Kurt Spindler a déclaré à son poste. Bien que cela ne soit pas supérieur, mais il est plus contenu. J'utilise une expédition pour faire la même chose.
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{ [searchBar resignFirstResponder]; [searchBar setShowsCancelButton:NO animated:YES]; }
Si vous voulez effectuer quelque chose d'asynchrone, utilisez simplement Dispatch_ASync. Vous n'avez pas besoin de Dispatch_Aducter avec une "valeur de retard presque instantanée". Par exemple. Dans ce cas Dispatch_Async (Dispatch_Get_Main_Quue (), ^ (VOID) {...}); code> fonctionne parfaitement bien.
Je crois que le 0,001 était nécessaire sur la base de la réponse de Kurt. Si ce n'est pas le cas, votre approche serait parfaitement acceptable.
J'ai placé une touche Annuler personnalisée sur le bouton d'annulation de la barre de recherche. P>
Définissez votre délégué de la barre de recherche et que de mettre ce code.
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { searchBar.resignFirstResponder() searchBar.setShowsCancelButton(false, animated: true) } func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { searchBar.setShowsCancelButton(true, animated: true) } func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { searchBar.resignFirstResponder() searchBar.setShowsCancelButton(false, animated: true) }
Je sais que celui-ci est vieux, mais j'ai pu la résoudre et je ne pouvais rien trouver d'autre sur ce que cela m'a résolu pour moi, alors voici ce qui a fonctionné (à Swift 3):
Activer le bouton Annuler lorsque le clavier se cache. Ajoutez ceci à ViewDiDload (): p> dans le clavierNotification (notification :) méthode, réagissez à la notification du clavierDidhide: p> deinit {
NotificationCenter.default.removeObserver(self)
}
À ce jour, aucune des réponses ne explique comment vous êtes censé trouver le bouton Annuler. La réponse d'octet, par exemple, utilise simplement Iskindofclass: Uibutton, que l'OP a déjà dit ne fonctionne pas. Puisque Uinavigationbutton est une classe non documentée, cela signifie-t-il que tous les messages envoyés à l'objet feront rejeter votre application?