UITextField 的宽度永远不会小于占位符文本的宽度

Posted

技术标签:

【中文标题】UITextField 的宽度永远不会小于占位符文本的宽度【英文标题】:UITextField's width is never less than it's width with placeholder text 【发布时间】:2017-07-10 16:59:25 【问题描述】:

我有一个UITextFieldUILabel 坐在一起UIView 这样:

它在 Xcode 中:

在用户在文本字段中输入一些文本之前,标签是隐藏的,因此它可以为数字条目提供持久的“后缀”。问题是,当用户在文本字段中键入数字时,它不会缩小到文本的大小,它保持在原始占位符的大小,即使它不可见,如下所示:

有什么方法可以将文本字段的宽度限制为最小尺寸以容纳用户的文本,而不注意不可见的占位符文本的宽度?

谢谢

【问题讨论】:

这很烦人。苹果再次成为苹果 【参考方案1】:

我自己解决了:

每当编辑文本时,都会检查文本字段以查看里面是否有任何文本。如果没有文本,则隐藏“mg”后缀,并添加占位符。如果有文本,则显示“mg”后缀并删除占位符。 像这样:(Swift)

func textFieldTextChanged(_ textField: UITextField) 

    milligramTextField.invalidateIntrinsicContentSize()

    view.layoutIfNeeded()

    if textField.text == "" 
        milligramSuffixLabel.text = ""
        milligramTextField.placeholder = "0 mg"
     else 
        milligramSuffixLabel.text = " mg"
        milligramTextField.placeholder = ""
    

This answer was of great help.

【讨论】:

以上是关于UITextField 的宽度永远不会小于占位符文本的宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何调整 UITextField 占位符文本以适合 UITextField 宽度?

UITextField 中的文本将无法正确居中

UITextField 占位符颜色

将 NSString 与 UITextField 文本进行比较永远不会被调用

UITextField 占位符问题

UITextField 不会自动调整宽度以适应内容,直到 resignFirstResponder 被调用?