之前在做一个简单的阅读器练习,主要是想学习一下iOS7中新增的Text Kit框架。但在练习过程中发现,UITextView中的文字不能选择,不管是长按还是双击,都不出现放大镜或编辑菜单。
经过多种尝试无果,并在网上寻找提问也没能得到解答。一番折腾之后,问题的关键所在算是渐渐清晰了,虽然现在仍然没有找到解决方案。
下面是Text Kit的几种使用模型,其中一种就会导致我上面所说的问题。Text Kit中包含NSTextStorage、NSLayoutManager、NSTextContainer三个类,一个NSTextStorage可以有一个或多个NSLayoutManager,一个NSLayoutManager可以有一个或多个NSTextContainer,而一个NSTextContainer必须对应一个UITextView。因此几种模型如下:
一
二
三
问题就出在第三种模型,即一个NSLayoutManager拥有多个NSTextContainer,其它两种情况都正常。我也不敢妄自揣测这是一个bug还是Apple就这样设计的还是其它什么原因……
这里是我写的三种情况的示例代码。
PS. 第三种情况中的自动分页功能需要将TextView的scrollEnabled属性设置为NO。