我有一个UItextfield,它包含一个人的中间名。我只希望它显示它的第一个初始值,但我希望它能保存它们的全名。它只能显示一个初始值,但它会在字母后添加省略号(...)。当uitextfield溢出时,是否可以删除它们?我没有在网上发现任何有同样问题的人。
谢谢你的帮助
答案 0 :(得分:1)
当文本字段退出第一响应者时,我确实看到了这种截断。我通过将NSParagraphStyle属性中的lineBreakMode
设置为.byClipping
来解决此问题。我碰巧正在使用UITextField的子类,所以我改写了resignFirstResponder()
。我的textField开始为空,因此viewDidLoad中没有attributedString开头。
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?)
函数,然后从那里调用通用函数。
答案 1 :(得分:0)
UITextField
不应截断文本(因为您通常可以滚动/选择该UI元素)。
默认情况下,UILabel
会截断,您可以将其设置为剪辑。