ios - 将 TextView 滚动到顶部

标签 ios swift uiscrollview uikit uitextview

我有一个显示长文本的 TextView (UITextView) 在运行时设置,如下所示:

@IBOutlet weak var textView: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()

    if something {
        textView.text = "(very long text here)"
    }

    textView.contentOffset = CGPoint.zero  // doesn't work

}

不幸的是,当显示 TextView 时,文本没有滚动到顶部而是在中间某处。

我在想,要么设置 contentOffset 的方式不对,要么我在错误的时间做这件事(也许文本在设置 contentOffset 之后发生了变化?)。

我已经尝试了很多,我什至联系了 Apple Code Level Support。他们帮不了我,真的(这让我很惊讶)——你能吗?

我会非常感激。谢谢。

最佳答案

我有一个非常相似的问题,尤其是在 iPhoneX 上使用 splitview 和测试时,当我需要 textView 滚动到顶部时,我通过将这段代码合并到我的 ViewController 中解决了这个问题:

textView.setContentOffset(.zero, animated: false)
textView.layoutIfNeeded()

如果您希望在加载 ViewController 时滚动到 textView 的顶部:

override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        // Can add an if statement HERE to limit when you wish to scroll to top
        textView.setContentOffset(.zero, animated: false)
}

关于ios - 将 TextView 滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54658995/

相关文章:

iphone - 获取 iPhone 上当前的 UIScrollView 滚动值?

ios - 初始化程序后的 AKNode 连接不适用于 AKCompressor

ios - 退出前保存最后一个数组

ios - 在 Swift 中通过 TCP 发送消息(NULL 终止)

ios - 使用 MultiPart 上传图片

即使在单独的线程上,Swift 也无法与页面交互

ios - SwiftUI 误导性错误 : 'Int' is not convertible to 'CGFloat'

iOS UIScrollView 问题

android - Azure AD Graph API - 在 iOS/Android 上获取 token

ios - 无法创建托管对象的子类