解决方法
通常,您必须符合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] 举报,一经查实,本站将立刻删除。