我有一个UItextfieldthat持有一个人的中间名。 我只想让它显示首字母,它确实是这样做的,但我想让它显示整个名字。 它的大小只够显示一个首字母,但它在字母后面添加了省略号(...).是否可以在uitextfield溢出时删除这些? 我在网上没有找到任何关于有人有同样问题的资料。
谢谢你的帮助
A UITextField
不应该截断文本(因为你通常可以滚动选择那个UI元素)。
A UILabel
默认情况下会截断,您可以将其设置为剪切。
当文本字段辞去第一响应者时,我确实看到了这种截断。我通过设置 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?)
函数,并从那里调用普通函数。