如何限制UITextVIEw中的行数?
我搜索了很多,没有结果有用!
我找到了Swift的答案:
locationNoteTextVIEw.textContainer.maximumNumberOflines = 2self.locationNoteTextVIEw.textContainer.lineBreakMode = NSlineBreakMode.ByClipPing
它不起作用,通过这种方式用户可以输入无限字符,但在屏幕上查看的只是两行!
因此,如果您尝试打印textVIEw文本,您将找到灾难文本.
解决方法 您需要实现textVIEw:shouldChangeTextInRange:replacementText:.只要文本发生变化,就会调用此方法.您可以使用其text属性访问文本视图的当前内容.使用[textVIEw.text stringByReplacingCharactersInRange:range withString:replacementText]从传递的范围和替换文本构造新内容.
然后,您可以计算行数并返回YES以允许更改,或者NO拒绝它.
编辑:在OP请求:
func sizeOfString (string: String,constrainedToWIDth wIDth: Double,Font: UIFont) -> CGSize { return (string as Nsstring).boundingRectWithSize(CGSize(wIDth: wIDth,height: DBL_MAX),options: NsstringDrawingOptions.UseslineFragmentOrigin,attributes: [NSFontAttributename: Font],context: nil).size}func textVIEw(textVIEw: UITextVIEw,shouldChangeTextInRange range: NSRange,replacementText text: String) -> Bool { let newText = (textVIEw.text as Nsstring).stringByReplacingCharactersInRange(range,withString: text) var textWIDth = CGRectGetWIDth(UIEdgeInsetsInsetRect(textVIEw.frame,textVIEw.textContainerInset)) textWIDth -= 2.0 * textVIEw.textContainer.lineFragmentpadding; let boundingRect = sizeOfString(newText,constrainedToWIDth: Double(textWIDth),Font: textVIEw.Font!) let numberOflines = boundingRect.height / textVIEw.Font!.lineHeight; return numberOflines <= 2;}总结
以上是内存溢出为你收集整理的ios – 如何限制UITextView中的行数?全部内容,希望文章能够帮你解决ios – 如何限制UITextView中的行数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)