9
votes

iPhone UisearchBar & KeyboardArence

Lorsque le clavier apparaît, je veux définir le xxx

J'ai vérifié la documentation et on dirait que vous ne pouvez changer que le clavierype.

peut ceci être fait sans violer l'une des API privées d'Apple?


0 commentaires

4 Réponses :


-2
votes

KeyboardApparance est une propriété de l'UITEXTINUTTRASPROTOCOL, ce qui signifie que la propriété est définie via l'objet Textfield. Je ne suis pas au courant de ce qu'est un clavier d'alerte, de la SDK, c'est un clavier adapté à une alerte.

Voici comment vous accédez à la propriété: P>

UITextField *myTextField = [[UITextField alloc] init];
myTextField.keyboardAppearance = UIKeyboardAppearanceAlert;


2 commentaires

Vous avez manqué le fait que cela vient d'une barre d'Uisearch et non un Uitextfield. L'uikeyboardAppearCealert a un fond transparent que je veux garder la même chose dans toute mon application. Cela peut être réalisé comme vous avez démontré sur Uitextfields, mais la barre Uisearch dispose également d'un champ de texte à l'intérieur. Je voulais savoir s'il est possible de définir l'apparence du clavier pour ce champ de texte.


Ma faute. Dans les docs, on dirait qu'il n'y a pas de propriété ni de méthode pour définir la transparence du clavier sur la classe Uiseearchbar. Vous ne pouvez définir que le type de clavier.



27
votes

Cela devrait le faire:

for(UIView *subView in searchBar.subviews)
    if([subView isKindOfClass: [UITextField class]])
        [(UITextField *)subView setKeyboardAppearance: UIKeyboardAppearanceAlert];


3 commentaires

Je confirme: Ça marche: o) Je n'ai trouvé aucun autre moyen de l'obtenir. Cette réponse doit être acceptée.


Je suppose que cela fonctionne, mais j'ai trouvé une solution différente et plus simple ici: Stackoverflow.com/Questtions/1594346/...


@ecotax: Vous êtes en relation avec une solution sur le clavierType (par défaut, ASCII, numéros ...), mais ceci est à propos du putchboardArence (lumière, sombre)



9
votes

Cela ne fonctionne plus sur iOS 7 parce que la hiérarchie de la vue d'Uisearch Barre a changé. L'UITEXTVIEW est maintenant une sous-vision de la première sous-SUBVIEW (E.G. STI dans le SearchBar.subviews [0] .SubViews code> tableau).

Une manière plus appropriée à la preuve de faire cela serait de vérifier de manière récursive la hiérarchie de la vue entière et de rechercher uitextinputaits code> protocole plutôt que uitextfield code>, car c'est ce que c'est quoi déclare la méthode. Un moyen propre de faire cela est d'utiliser des catégories. Commencez par créer une catégorie sur UisearchBar qui ajoute cette méthode: p> xxx pré>

puis ajoutez une catégorie sur UIView qui ajoute cette méthode: p>

[searchBar setKeyboardAppearence: UIKeyboardAppearanceDark];


1 commentaires

merci très utile! Je pense qu'il y a une petite faute de frappe: "[Sous Sous-SubviewConformingToprotocol: PRO]" devrait être "[Sub FirstSubViewConformingToprotocol: PRO]"



35
votes

La meilleure façon dont j'ai trouvé cela, si vous souhaitez le faire dans votre application, est d'utiliser l'apparence sur Uitextfield. Mettez ceci dans votre AppDelegate lors du lancement.

[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark];


2 commentaires

Beaucoup de meilleure façon maintenant! Merci


Thats l'a fait pour moi aussi. Sur iOS7. Bien que l'idée de catégorie, ci-dessous, a l'air bien.