UITextView文本内容不是从顶部开始的

Orn*_*ilo 76 xcode text objective-c uitextview

我有一个很长的文本来自我的JSON文件,但是当我点击我的UITableViewCell的链接转到我的UIViewController页面时,UITextView文本加载了字符串内容,但它不会从头开始显示内容,我必须向上滚动时间.

我需要做什么?

小智 154

我遇到了同样的问题,事实证明我必须在viewDidLayoutSubviews中设置内容偏移才能生效.我正在使用此代码显示属性静态文本.

- (void)viewDidLayoutSubviews {
    [self.yourTextView setContentOffset:CGPointZero animated:NO];
}
Run Code Online (Sandbox Code Playgroud)

SWIFT 3:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.textView.setContentOffset(CGPoint.zero, animated: false)
}
Run Code Online (Sandbox Code Playgroud)

  • 在所有答案中,这个答案是最好的.此外,如果你的UITextView文本在文本视图的垂直中间某处开始,那么将以下内容添加到viewDidLoad也将解决这个问题:self.automaticallyAdjustsScrollViewInsets = false (4认同)
  • 虽然这是一个可行的解决方案但不幸的是,即使你使用`viewWillLayoutSubviews`,它也会产生难看的可见上翻:/ / (2认同)

Dan*_*182 43

这是对我有用的唯一方法.我在加载视图之前禁用了UITextView的滚动,然后我再次启用它:

  override func viewWillAppear(_ animated: Bool) {
        yourTextView.isScrollEnabled = false
    }

    override func viewDidAppear(_ animated: Bool) {
        yourTextView.isScrollEnabled = true
    }
Run Code Online (Sandbox Code Playgroud)

  • 最佳解决方案,使发生卷轴具有最小的可见视觉效果 (2认同)

小智 27

[self.textView scrollRangeToVisible:NSMakeRange(0, 1)];
Run Code Online (Sandbox Code Playgroud)

viewDidLoad


小智 18

通过在加载内容之前以编程方式禁用textview的滚动属性 textview.scrollenabled = NO;

加载后启用textview的滚动 textview.scrollenabled = YES;

同时检查XIB,始终不检查启用Textview的滚动.


小智 12

问题的答案iOS 10中UITextView顶部的空白区域提供了更清晰的最终用户体验.

viewDidLoad包含文本视图的视图控制器中:

 self.automaticallyAdjustsScrollViewInsets = false
Run Code Online (Sandbox Code Playgroud)

设置textView.setContentOffset(CGPointMake(0,0), animated: false)和其中一些建议在调用时可以正常工作,viewDidLayoutSubviews()但在iPad 2及更旧版本的旧设备上,您实际上会在显示屏幕时看到文本滚动.这不是您希望最终用户看到的内容.