UITextField - 删除文本溢出上的省略号

时间:2013-05-24 15:14:05

标签: ios xcode uitextfield

我有一个UItextfield,它包含一个人的中间名。我只希望它显示它的第一个初始值,但我希望它能保存它们的全名。它只能显示一个初始值,但它会在字母后添加省略号(...)。当uitextfield溢出时,是否可以删除它们?我没有在网上发现任何有同样问题的人。

谢谢你的帮助

2 个答案:

答案 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会截断,您可以将其设置为剪辑。