J'ai créé un clavier personnalisé pour un UITextField, composé de 18 UIButtons. C'est un UIView qui est défini comme inputView du champ de texte.L'image extensible du clavier personnalisé iOS cesse de s'étirer
Les boutons sont créés dans la méthode initWithFrame:
du UIView en utilisant le code
UIImage* buttonImage =[[UIImage imageNamed:@"keyboard-button-background.png"] stretchableImageWithLeftCapWidth:1.0 topCapHeight:79.0];
UIImage* buttonPressedImage =[[UIImage imageNamed:@"keyboard-button-pressed-background.png"] stretchableImageWithLeftCapWidth:1.0 topCapHeight:79.0];
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:title forState:UIControlStateNormal];
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted];
button.frame = CGRectMake(xPosition, yPosition, buttonWidth, buttonHeight);
Une fois que le bouton a été enfoncé, ce bouton est alors défini comme enabled = NO
. L'arrière-plan s'étire parfaitement pendant qu'au moins l'un des boutons est activé. Si tous les boutons sont désactivés et que le champ UITextfield resignsFirstResponder
puis l'UITextField devient Premier répondant, les boutons apparaissent mais l'image d'arrière-plan ne semble plus s'étirer (du moins dans le sens vertical, l'horizontale semble correcte).
Je ne sais pas vraiment par où commencer à chercher la solution. Je suppose que c'est dans la façon dont le clavier personnalisé dessine les sous-vues, mais je ne suis pas sûr.
Est-ce que cela peut être résolu en réglant l'image d'arrière-plan en layoutSubviews
, ou drawRect:
ou quelque chose comme ça? Le fait que l'étirement horizontal fonctionne bien me fait me demander si le cadre de l'UIButton n'est pas correct pendant qu'il est dessiné.
EDIT Les cellules à l'extrême gauche ne sont que des étiquettes, les cellules à droite avec des chiffres sont UITextFields et ont le clavier personnalisé
Comment le clavier devrait ressembler à:
Comment clavier ressemble réellement une fois démissionné premier répondeur sur la cellule 3, puis a donné 1 premier répondeur (toutes les touches désactivées), puis a donné 4 premiers répondeurs:
Pouvez-vous inclure des captures d'écran? C'est un peu difficile d'imaginer à quoi cela ressemble. – jrturton
ouais accrocher 2 minutes – Josh
Où établissez-vous vos rects? – Luke