【iOS】UITextView 自动滚动

今天在收到朋友的求助,帮他写个下载图片集的 Demo,要求算出总时间,传给服务器。(什么鬼需求!)
这不是重点,重点是当时心一热,给写了个 UI 效果,显示下当前进度,像这样:

By https://LeoDev.me

自动滚动

这个效果本来是参考 Xcode 的 Debug Area 做的,然后发现个挺逗的地方,这玩意不自动滚啊,一直在顶部。。。

By https://LeoDev.me

这就不对了嘛,怎么能这样呢!你得滚起来呀!
然后我就加了这么一句代码:

1
[self.textView scrollRangeToVisible:NSMakeRange(self.textView.text.length, 1)];

效果是这样子的:

By https://LeoDev.me

搞定~

拓展: 聊天室

之前看到过岛国一篇 博文,讲到聊天室用 UITextView 实现会出现一个小问题,简单来讲就是使用 scrollRangeToVisible: 方法会导致字符串 Append 后自动滑动到底部,然后系统又自动滑动到顶部,再编辑又自动滑动到底部。。。如下图,这个动画有点醉啊。。。

By https://LeoDev.me

当然岛国 博主 很快贴出了解决方案:

1
self.textView.layoutManager.allowsNonContiguousLayout = NO;

效果就是这样滴:

By https://LeoDev.me

哟西,功劳大大滴!

参考:
[iOS] iOS8,iOS7にてUITextViewで最後の行をTapするとTopにScrollする現象(ぶっ飛び怪奇現象)の回避方法

联系与捐赠

  • Mail: echo bGVvZGF4aWFAZ21haWwuY29tCg== | base64 -D
  • GitHub: iTofu
  • 如果你想对我的开发或是开源项目进行支持捐助,请扫描下方二维码,谢谢!👇

    LEO

🍭 支持一根棒棒糖!