我正在使用Swift,并且有一个UITextView,我希望在添加新文本时始终保持滚动状态,并且文本的长度大于textView可以显示的长度。
只要我的textview不包含任何新行"\n"
let range = NSMakeRange(textView.text.count - 1, 1)
textView.scrollRangeToVisible(range)
但是,一旦添加返回值,该范围就不再对滚动有效。 我已经尽可能多地检查了相关的帖子,但是似乎都没有解决这个问题。有人可以帮忙吗?
答案 0 :(得分:0)
好。我发现了问题所在。如果将UITextView设为不可选择,则当您以编程方式将文本添加到视图时,如果文本中有返回,则视图将无法正确滚动,而没有返回的文本将完美滚动。 这是一个简单的例子。用一个按钮和一个UITextView创建一个Viewcontroller。 连线并与两个布尔一起玩。 您将发现,如果isSelectable = false和isReturnText = true,则它将不会滚动,但是如果isReturnText = false,它将滚动查找。 如果我将isSelectable = true设置为true,则两者都将按预期完美滚动。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
var isSelectable:Bool = true
var isReturnText:Bool = true
let returnText = "These sentences are separated by returns.\n"
let nonReturnText = "These sentences are separated by space. "
override func viewDidLoad() {
super.viewDidLoad()
textView.isSelectable = isSelectable
}
@IBAction func addNoReturnText(_ sender: Any) {
textView.text += isReturnText ? returnText : nonReturnText
let range = NSMakeRange(textView.text.count - 1, 1)
textView.scrollRangeToVisible(range)
}
}