2015-10-31 102 views
10

我相信在ViewController中有一个标准的UITextView,其中包含大量的文本,但并非所有文本都可以放在屏幕上。我想要发生的是,当加载该视图时,用户可以开始阅读文本的顶部,然后在页面浏览文本时向下滚动页面。有道理,对吗?我想要的不是不现实的。UITextView中的文本自动滚动到底部

问题是,当视图加载时,UITextView中的文本已经一直滚动到底部。我搜索过这个帖子,并且有许多类似的帖子,但其中的解决方案都没有解决我的问题。这里是他在视图控制器中的代码:

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. 
    } 

} 

我已经尝试了大多数标准解决方案无济于事。我还没有尝试的一个常见建议是“取消选中属性检查器中的调整滚动视图插入”。我没有尝试过的原因是因为我找不到这个神话般的复选框。

我需要做些什么来使文本开始对齐顶部?

+0

同样的问题发生在我身上。不知道它为什么会发生,但它很烦人。有时我觉得,苹果给他们的开发者带来了更多麻烦。我已经尝试了提供给这个问题的所有解决方案,但他们都没有工作。使用Xcode9.1(Swift)。 –

+0

我最终在滚动视图中添加了一个标签。我对此感到非常不满:) –

回答

18

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

myTextView.scrollRangeToVisible(NSMakeRange(0, 1)) 

这将自动滚动的TextView在TextView的第一个字符。但是,当视图出现时,可能会添加一些不需要的动画。第二种方法是通过添加:

myTextView.setContentOffset(CGPoint.zero, animated: false) 

这滚动的UITextView点零(开始),并让您是否希望它动画或无法控制。

+0

这绝对是答案。谢谢! – zeeple

+1

我有一个类似的问题,但是当我添加这个时,滚动的能力从TextView丢失..任何想法? – Prateek

6

更新了斯威夫特3

要使用亚伦的斯威夫特卡伦特3溶液:

override func viewDidLayoutSubviews() { 
    myTextView.setContentOffset(CGPoint(x: 0, y: 0), animated: false) 
}