ios – 如何限制UITextView中的行数?

ios – 如何限制UITextView中的行数?,第1张

概述我的屏幕上有一个UITextView,用户应该只填充两行,当用户在第二行时,返回键应该变为Done. 如何限制UITextView中的行数? 我搜索了很多,没有结果有用! 我找到了Swift的答案: locationNoteTextView.textContainer.maximumNumberOfLines = 2self.locationNoteTextView.textContainer. 我的屏幕上有一个UITextVIEw,用户应该只填充两行,当用户在第二行时,返回键应该变为Done.

如何限制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中的行数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1102594.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存