11
votes

Bouton d'annulation Uiseearchbar

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: xxx

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.


1 commentaires

À 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?


6 Réponses :


1
votes

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 XXX

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).


1 commentaires

Cela fonctionne comme une magie .. @ Kurt pouvez-vous me dire d'où vous avez ceci? Incroyable..uppoté



2
votes

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];
}


2 commentaires

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) {...}); 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.



1
votes

J'ai placé une touche Annuler personnalisée sur le bouton d'annulation de la barre de recherche.


0 commentaires

23
votes

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)
}


0 commentaires

1
votes

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> xxx pré>

dans le clavierNotification (notification :) méthode, réagissez à la notification du clavierDidhide: p>

deinit {
    NotificationCenter.default.removeObserver(self)
}


0 commentaires

3
votes

Swift 5: , Swift 4: xxx


0 commentaires