MDCTextField rightView属性在iOS 13上损坏

时间:2019-09-24 10:33:53

标签: ios swift ios13 material-components

在iOS 13上,我无法再将--- <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"><link rel="stylesheet" href="https://widget.cop.co/css/cop.css?v=1569320935042" crossorigin="anonymous"> sdk.js:1030:11 --- <div class="consultation"><div class="consultation-logged-in"></div><div class="consultation-header"></div><div class="propositions"></div><div class="proposition-send"></div><div class="consultation-footer"></div></div> sdk.js:1031:11 --- #12 Getting consultation... --- <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"><link rel="stylesheet" href="https://widget.cop.co/css/cop.css?v=1569320935042" crossorigin="anonymous"> sdk.js:1030:11 --- <div class="consultation"><div class="consultation-logged-in"></div><div class="consultation-header"></div><div class="propositions"></div><div class="proposition-send"></div><div class="consultation-footer"></div></div> sdk.js:1031:11 --- 属性与rightView一起使用。我是唯一对此有疑问的人吗?

右视图宽度覆盖整个文本字段:防止用户交互并隐藏textView内容。

MDCTextField切换到MDCTextField时没问题。

2 个答案:

答案 0 :(得分:14)

宽度 constraint添加到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中,然后添加此视图。

答案 1 :(得分:2)

显然,这是rightViewRect(forBounds:)在iOS 13 Beta 5中的行为方式的变化。

来自iOS & iPadOS 13 Developer Beta 5 Release Notes

  

UIKit-已解决的问题

     

在iOS 13之前,UITextField假定在分配时已正确设置其leftView和rightView的帧,并且不会更改。从iOS 13开始,leftViewRect(forBounds :)和rightViewRect(forBounds :)的实现现在向视图询问其systemLayoutSizeFitting( :)。要实现与iOS 13链接并在iOS 13上运行时的先前行为,请在视图上添加显式的大小限制,将其包装在纯UIView中,或将视图子类化并实现systemLayoutSizeFitting( :)。 (51787798)

MDCTextField -(CGRect)rightViewRectForBounds:(CGRect)bounds函数需要更新。