我的屏幕上有一个UITextView,用户应该只填充 two lines ,当用户在第二行时,返回键应该变为 Done .
如何在UITextView中限制 lines 的数量?我搜索了很多,没有结果有用!
我找到了Swift的答案:
locationNoteTextView.textContainer.maximumNumberOfLines = 2
self.locationNoteTextView.textContainer.lineBreakMode = NSLineBreakMode.ByClipping
它不起作用,通过这种方式用户可以输入无限字符,但在屏幕上查看的只是两行!
因此,如果您尝试打印textView文本,您将找到灾难文本 .
6 回答
你需要实现
textView:shouldChangeTextInRange:replacementText:
. 只要文本要更改,就会调用此方法 . 您可以使用其text属性访问文本视图的当前内容 .使用
[textView.text stringByReplacingCharactersInRange:range withString:replacementText]
从传递的范围和替换文本构造新内容 .然后,您可以计算行数并返回
YES
以允许更改或NO
拒绝它 .EDIT: 关于OP请求:
适用于iOS 7
要么
这是@Abhinav的回答,但在 Swift
如果有人想要实时行数,这就是你用RxSwift和RxCocoa做的
这是@ Abhinav的回答更新 Swift 3
其中 maxLines 是您要将textView限制为的行数 . 如果它是0那么无限数量的行 .
在下面找到Abhinav答案的Objective C版本: