web-dev-qa-db-fra.com

Propriété MDCTextField rightView cassée sur iOS 13

Je ne peux plus utiliser la propriété rightView avec MDCTextField sur iOS 13. Suis-je le seul à avoir un problème avec cela?

La largeur de vue droite couvre l'ensemble du champ de texte: empêchant l'interaction de l'utilisateur et masquant le contenu textView.

Pas de problème lorsque je passe de MDCTextField à UITextField.

9
Tulleb

Ajoutez largeurconstraint au rightView/leftView.

N'oubliez pas de régler translatesAutoresizingMaskIntoConstraints = false

rightView.translatesAutoresizingMaskIntoConstraints = false
rightView.widthAnchor.constraint(equalToConstant: <#NeededWidth#>).isActive = true
// This is enough to make it act like before but you can set other missing constraints like height to suppress layout warnings and prevent further issues.
// rightView.widthAnchor.constraint(equalToConstant: <#HeightOfTheTextField#>).isActive = true

Vous pouvez remarquer des avertissements de mise en page automatique dans la console car vous n'avez pas défini la contrainte manquante pour rightView/leftView. Ajoutez donc des contraintes manquantes ou ignorez-les simplement.

Et notez que si le rightView/leftView est une sorte de StackView, essayez de le mettre dans un view, puis ajoutez cette vue à la place.

15
Mojtaba Hosseini

Apparemment, c'était un changement dans la façon dont rightViewRect(forBounds:) se comporte dans iOS 13 Beta 5.

À partir de iOS & iPadOS 13 Developer Beta 5 Release Notes :

UIKit - Problèmes résolus

Avant iOS 13, UITextField supposait que les cadres de ses leftView et rightView étaient correctement définis lors de leur affectation et ne changeraient jamais. À partir d'iOS 13, l'implémentation de leftViewRect (forBounds :) et rightViewRect (forBounds :) demande maintenant la vue pour son systemLayoutSizeFitting ( :). Pour obtenir le comportement précédent lors de la liaison et de l'exécution sur iOS 13, ajoutez des contraintes de dimensionnement explicites sur la vue, enveloppez-la dans une vue UIV simple ou sous-classe la vue et implémentez systemLayoutSizeFitting ( :). (51787798)

La fonction MDCTextField-(CGRect)rightViewRectForBounds:(CGRect)bounds doit être mise à jour.

3
alxlives