UITextView中的文本自动滚动到底部

zee*_*ple 13 uitextview ios swift

我认为它是ViewController中的标准UITextView,其中包含大量文本,足以使其不能全部适合屏幕.我想要发生的是,当加载该视图时,用户可以开始阅读文本的顶部,然后在页面进展时向下滚动页面.有道理,对吗?我想要的并不是不切实际的.

问题是当视图加载时,UITextView中的文本已经一直向下滚动到底部.我已经搜索过SO并且有很多类似的帖子,但其中没有一个解决方案可以解决我的问题.这是他查看控制器中的代码:

import UIKit

class WelcomeTextVC: UIViewController {

    var textString: String = ""

    @IBOutlet weak var welcomeText: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.navigationBar.translucent = false

        self.welcomeText.text = textString
        self.welcomeText.scrollRangeToVisible(NSMakeRange(0, 0))
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(true)

        self.welcomeText.scrollRangeToVisible(NSMakeRange(0, 0))
        welcomeText.setContentOffset(CGPointMake(0, -self.welcomeText.contentInset.top), animated: true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
Run Code Online (Sandbox Code Playgroud)

我尝试过大多数标准解决方案都无济于事.我没有尝试过的一个常见建议是"取消选中属性检查器中的调整滚动视图插入".我没有尝试过的原因是因为我无法找到这个传说中的复选框.

我需要做什么才能使文本开始与顶部对齐?

Aar*_*ron 22

我知道有几种方法.两种方式都是通过viewDidLayoutSubviews()视图控制器中的方法以编程方式实现的.通话结束后super.viewDidLayoutSubviews(),您可以添加:

myTextView.scrollRangeToVisible(NSMakeRange(0, 1))
Run Code Online (Sandbox Code Playgroud)

这会自动将textView滚动到textView中的第一个字符.但是,当视图出现时,可能会添加一些不需要的动画.第二种方式是添加:

myTextView.setContentOffset(CGPoint.zero, animated: false)
Run Code Online (Sandbox Code Playgroud)

这会将UITextView滚动到零点(开头)并让您控制是否要将其设置为动画.