加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – UITextView长度问题

发布时间:2020-12-14 04:52:04 所属栏目:百科 来源:网络整理
导读:我有一个启用了滚动的UITextView,我可以更改里面文本的字体和大小.那么,我该如何设置文本限制?我已经尝试设置最大行数和最大字符数,但它不起作用,因为我需要设置文本的大小限制,我该怎么做? 解决方法 通常,您必须符合UITextFieldDelegate协议,将视图控制器
我有一个启用了滚动的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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读