UITextField - 限制文本长度而不是字符数

时间:2014-12-07 15:47:31

标签: xcode ipad ios7 swift uitextfield

有没有办法限制文本字段而不是字符数?我希望在达到字段结尾时停止输入的能力。但是由于不同的角色具有不同的尺寸,因此停止在某个数量上并不是真正的解决方案。类似于"停在线的末端"会是完美的。

这对我不起作用

Max length UITextField

2 个答案:

答案 0 :(得分:2)

您要做的不是计算新字符串的最大字符数,而是计算点的宽度,并将其与您需要的宽度进行比较。

[夫特]

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    let combinedString = textField.attributedText!.mutableCopy() as NSMutableAttributedString
    combinedString.replaceCharactersInRange(range, withString: string)
    return combinedString.size().width > textField.bounds.size.width
}

您可能需要编辑属性以使其在一行上呈现。

答案 1 :(得分:0)

订阅controlTextDidChange并通过

计算文字的大小
let s = NSString(string: <yourtext>)
let size = s.boundingRectWithSize(<#size: NSSize#>, options: <#NSStringDrawingOptions#>, attributes: <#[NSObject : AnyObject]?#>)

现在您可以检查文字是否太大。