我有一个包含一个人的中间名的 UItextfield。我只希望它显示第一个首字母,它确实如此,但我希望它保留他们的全名。它只是大到足以显示一个首字母,但它在字母之后添加了省略号 (...)。当 uitextfield 溢出时是否可以删除这些省略号?我没有在网上找到任何关于有同样问题的人的信息。
谢谢您的帮助
我有一个包含一个人的中间名的 UItextfield。我只希望它显示第一个首字母,它确实如此,但我希望它保留他们的全名。它只是大到足以显示一个首字母,但它在字母之后添加了省略号 (...)。当 uitextfield 溢出时是否可以删除这些省略号?我没有在网上找到任何关于有同样问题的人的信息。
谢谢您的帮助
当文本字段辞去第一响应者时,我确实看到了这种截断。我通过将lineBreakMode
NSParagraphStyle 属性设置为.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?)
函数并从那里调用通用函数。
AUITextField
不应该截断文本(因为您通常可以滚动/选择该 UI 元素)。
AUILabel
默认会截断,您可以将其设置为剪辑。