1

我有一个包含一个人的中间名的 UItextfield。我只希望它显示第一个首字母,它确实如此,但我希望它保留他们的全名。它只是大到足以显示一个首字母,但它在字母之后添加了省略号 (...)。当 uitextfield 溢出时是否可以删除这些省略号?我没有在网上找到任何关于有同样问题的人的信息。

谢谢您的帮助

4

2 回答 2

2

当文本字段辞去第一响应者时,我确实看到了这种截断。我通过将lineBreakModeNSParagraphStyle 属性设置为.byClipping. 我碰巧使用了 UITextField 的子类,所以我重写resignFirstResponder()了这个。我的 textField 一开始是空的,所以在 viewDidLoad 中没有属性字符串可以开始。

override func resignFirstResponder() -> Bool {
    guard let newAttributedText = (attributedText?.mutableCopy() as? NSMutableAttributedString) else {
        return super.resignFirstResponder()
    }
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineBreakMode = .byClipping
    newAttributedText.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedText?.length ?? 0))
    attributedText = newAttributedText
    return super.resignFirstResponder()
}

如果您在代码中设置文本,这可能不起作用。在这种情况下,您可能希望lineBreak在一个通用函数中设置模式,您可以从覆盖resignFirstResponder()和设置代码中的文本之后调用该函数。您可以创建一个set(text: String?)函数并从那里调用通用函数。

于 2020-05-12T21:34:34.373 回答
0

AUITextField不应该截断文本(因为您通常可以滚动/选择该 UI 元素)。

AUILabel默认会截断,您可以将其设置为剪辑。

于 2013-05-24T17:02:40.273 回答