JTSTextView 0.0.1

JTSTextView 0.0.1

测试已测试
语言语言 Objective-CObjective C
许可证 MIT
版本号最新版本2014年12月

Jared Sinclair 维护。



  • 作者:
  • Jared Sinclair

UITextView 的合理替代品(因为自 iOS 7 开始,UITextView 已完全损坏,无法修复)。

当前问题

  • 拼写错误下划线看起来很怪。 针对拼写错误的红色点线下划线绘制不正确。我不确定为什么。UITextView 真是糟糕!

在 iOS 7 上 UITextView 已不可用

在 iOS 7 中,UITextView 完全损坏。错误的数量和严重性超出了这个小 README 的范围,但任何人只要处理过 UITextView 就会知道我的意思。以下是在 iOS 7 中 UITextView 的问题要点:

  • 内容尺寸的内部计算经常出错。显示/隐藏键盘,甚至只需移动光标都可能导致内容尺寸不可解释地改变,有时改变得如此之大使滚动无法正确启用。

  • 在换行时,文本视图将不会保持文本输入光标可见。

  • 使用属性字符串(无论是通过 setAttributedText 还是通过新的 NSTextStorageDelegate 协议)会导致更多的数学错误。返回的 CGRect(来自 caretRectForPosition)在返回正确的矩形之前,可能会从1到5次错误。这意味着,如果您还需要属性字符串,Greg Pierce 真的很聪明的 UITextView gist(GitHub 上的代码)就无法工作。

JTSTextView 如何工作?

JTSTextView 除了管理一个私有的 UITextView 子视图之外,本质上就是一个通常的 UIScrollView。这个私有文本视图高度固定(100,000点),因为它的高度帧(frame)始终大于其内容尺寸的高度,所以隐式禁用了滚动。通过使用固定高度和禁用滚动,这绕过了所有会破坏 UITextView 的不良数学计算。

为了使 JTSTextView 有用,它提供了一组公开的属性和方法,用于模拟真正的 UITextView 的属性、方法和委托协议。

使用 JTSTextView

要使用 JTSTextView,您应该基本上可以替换掉所有的 UITextView 代码。有一些差异,但总体上它 “ Just Works”。

关于那个 100,000 点高的东西是什么呢?

很高兴你提到了这一点。JTSTextView所使用的技巧意味着它 无法 支持超长的文本串(例如超长的博客文章)。但对于像电子邮件客户端、Twitter客户端、App.net客户端等,10万个点空间可能已经足够了。如果你敢冒险,可以尝试将其大小修改为100万个或更多。我不知道性能会有什么影响,但让我知道。

再说一件事

哦对了:JTSTextView还会根据键盘的可见性变化自动管理其底部内容的内边距。终于!如果你不想要这个功能,只需将automaticallyAdjustsContentInsetForKeyboard设置为NO即可。