44 votes

ios 13 - La barre de recherche personnalisée avec UISearchBar _searchField ne fonctionne pas

Avant Xcode-11-Beta (ios13) ci-dessous le code pour la valeur de la barre de recherche personnalisée pour la clé pour que textField fonctionne correctement. Maintenant, voici le journal des plantages.

'NSGenericException', raison : 'L'accès à l'ivar _searchField de UISearchBar est interdit. C'est un bug d'application'

 - (UITextField *)textField
{
 return [self valueForKey:@"_searchField"];
}

Toute aide appréciée.

73voto

Joey Points 2141

Le SDK fournit désormais UISearchBar.searchTextField afin que vous puissiez simplement remplacer votre implémentation d'API privée par l'API publique.

 searchBar.searchTextField.backgroundColor = [UIColor blueColor];

21voto

J'ai eu le même crash, avec IOS 13 vous n'avez plus besoin du .value(forKey :)

Voici la ligne qui a causé le crash :

 if let searchField = searchController.searchBar.value(forKey: "_searchField") as? UITextField {

Et c'était le correctif:

 let searchField = searchController.searchBar.searchTextField

8voto

Tejas Points 719

Faites ceci :

  var searchTextField: UITextField?
    if #available(iOS 13.0, *) {
        searchTextField = searchBar.searchTextField
    } else {
        if let searchField = searchBar.value(forKey: "searchField") as? UITextField {
            searchTextField = searchField
        }
    }

Cela vous donnera le champ de texte de la barre de recherche de manière appropriée en fonction de la vérification de la version.

7voto

Syrota Roman Points 81

Cela fonctionne toujours pour moi avec la clé "searchField" sans trait de soulignement. Rapide 5

 guard let searchField = searchBar.value(forKey: "searchField") as? UITextField else { return }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X