iOS文本编程指南(一)
iOS中的文本处理
iOS平台给你提供了多种展示文本以及让用户编辑文本的方式。同时也能够展示格式化的内容及网页内容。这些工具包括UIKit Framework中的text views,text fields,web views这些原生类,也包括使用布局引擎直接绘制、布局,管理文本。(译者注:这里的布局引擎应该指的是core text 或 textkit)
使用UIKit framework,可以管理edit menu,实现自定义的输入控件,还可以实现数据在应用间的拷贝、剪切、粘贴。
概览
iOS应用有许多功能强大的技术可以处理文本。
UIKit Framework提供文本及网页相关的类
你可以使用现成的控件——UITextView,UITextField,UILabel,可以使用Interface Builder添加并配置它们。你也可以把你应用中的一个页面变成一个微型浏览器,它能识别并展示HTML,CSS以及javascript内容。
用户编辑文本时,你的应用需要管理键盘
当用户点击一下text field,text view 或者web页面中的输入框,系统就会弹出一个键盘。应用能够控制展示何种键盘;例如,对于一个数值输入框,应该选择数值键盘。如果正在输入或编辑的文本被键盘遮挡了,应用应该调整文本的展示,使文本出现在键盘之上。这些控件的代理,需要在键盘消失时让所编辑的文本生效,并能够访问和存储这些值。
你的应用可以直接绘制并管理文本
在UIKit的text view之下是一个功能强大的排版引擎,叫做Text Kit。如果你需要自定义排版过程或者干预排版,你可以使用Text Kit。Text Kit是一组类和协议,能提供高质量的排版服务——使应用在存储、布局及展示文本时使用精细排版的所有特征,如字距、连字、断线,和调整。
大多数应用可以使用高级的文本展示类或者Text Kit完成文本处理。对于少数需要自定义解决方案的应用,你可以采用底层技术,比如Core Text,Core Graphics以及Core Animation等。
为了能够直接与输入系统通信,可以使用UITextInput协议,你的应用也可以使用拼写检测、正则表达等技术。
你的应用还有一些有关数据输入和编辑的可选项
UIKit Framework提供了一个用来在页面中编辑数据或向应用输入数据的可编程接口。自定义输入控件可以替代系统键盘,用来输入特殊数据。输入附加控件是一个出现在系统键盘(或自定义输入控件)之上的自定义控件,它能够让用户从系统允许的方式中影响所编辑的数据。使用UIPasteboard以及其它相关类,应用能够在应用的不同位置或是在应用间拷贝、剪切、粘贴数据。作为拷贝-剪切-粘贴操作的一部分,用户点击edit menu中的一个命令;而你的应用来管理这个edit menu,并且可以往上添加自定义命令。
相关内容
Core Graphics以及Core Animation拥有一些文本处理的能力。例如,Core Animation提供CATextLayer类。学习更多这些特性,阅读Quartz 2D Programming Guide(Core Graphics)以及Core Animation Programming Guide。想要查看更多有关Core Text框架的内容,可以阅读Core Text Programming Guide以及Core Text Reference Collection