IOS 13では、rightView
プロパティをMDCTextField
で使用できなくなりました。これに問題があるのは私だけですか?
正しいビュー幅はテキストフィールド全体をカバーします。ユーザーの操作を防ぎ、textViewコンテンツを非表示にします。
MDCTextField
からUITextField
に切り替えても問題ありません。
widthconstraint
をrightView
/leftView
に追加します。
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
rightView
/leftView
に不足している制約を設定しなかったため、コンソールにいくつかの自動レイアウト警告が表示される場合があります。したがって、不足している制約を追加するか、単にそれらを無視してください。
また、rightView
/leftView
がStackView
の一種である場合は、view
内に配置してから、このビューを追加してください。
どうやらこれはiOS 13 Beta 5でのrightViewRect(forBounds:)
の動作の変更でした。
iOS&iPadOS 13 Developer Beta 5リリースノートから :
UIKit-解決された問題
IOS 13より前は、UITextFieldは、割り当てられたときにleftViewおよびrightViewのフレームが正しく設定され、決して変更されないと想定していました。 iOS 13以降、leftViewRect(forBounds :)およびrightViewRect(forBounds :)の実装は、ビューにsystemLayoutSizeFitting(:)を要求するようになりました。 iOS 13にリンクして実行するときに以前の動作を実現するには、明示的なサイズ制限をビューに追加するか、プレーンなUIViewでラップするか、ビューをサブクラス化してsystemLayoutSizeFitting(:)を実装します。 (51787798)
MDCTextField-(CGRect)rightViewRectForBounds:(CGRect)bounds
関数を更新する必要があります。