微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – UITextView长度问题

我有一个启用了滚动的UITextView,我可以更改里面文本的字体和大小.那么,我该如何设置文本限制?我已经尝试设置最大行数和最大字符数,但它不起作用,因为我需要设置文本的大小限制,我该怎么做?

解决方法

通常,您必须符合UITextFieldDelegate协议,将视图控制器指定为UITextField的委托(在IB或代码中指定),然后实现考虑字符串长度的shouldChangeCharactersInRange:

func textField(textField: UITextField,shouldChangeCharactersInRange range: NSRange,replacementString string: String) -> Bool {
    let oldString = textField.text ?? ""
    let startIndex = oldString.startIndex.advancedBy(range.location)
    let endindex = startIndex.advancedBy(range.length)
    let newString = oldString.stringByReplacingCharactersInRange(startIndex ..< endindex,withString: string)
    return newString.characters.count <= kMaxLength
}

另一方面,如果要控制输入的文本量以符合控件的大小,则可以使用前面提到的shouldChangeTextInRange,但使用sizeWithAttributes来指示该方法是返回true还是false而不是字符数.

这不太对,但它说明了基本思想:

func textField(textField: UITextField,withString: string)
    let stringSize = newString.sizeWithAttributes([NSFontAttributeName : textField.font ?? UIFont.systemFontSize()])

    return stringSize.width < textField.editingRectForBounds(textField.bounds).size.width
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐