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