12.1.2 UIControl

12.1.2 UIControl

UIControl是大部分交互控件的基类,继承自它的控件有UIButton、UITextField、UIDatePicker、UIPageControl、UISegmentedControl 、UISlider、UIStepper以及UISwitch。

交互控件一般用于创建应用程序的界面,并且提供一定的可操作性,通过交互让用户可以修改或者创建内容。控件一般使用target-action或者delegate的模式告予视图控制器发生了什么,由视图控制器来决定接下来应该做些什么。

UIControl作为交互控件的基类,为控件提供了七种UIControlState来表示当前控件的状态。我们通过查看UIControl的声明文件便可知道UIControl提供的状态:

其中,normal、highlighted、disabled、selected是iOS 2.0系统就已经提供的,后面三种(focused、application、reserved)是iOS 9.0之后提供的。具体的状态都存储在UIControl的state属性中,不过UIControl提供了三个额外的属性(isHighlighted、isSelected、isEnabled)来表达单独的状态情况。

此外UIControl还定义了UIControlEvent,即控件接收到的事件如下:

这些事件包括手指按下、手指拖拽、手指点击等触控事件。iOS 9.0版本之后还添加了一些跟编辑状态相关的事件,有兴趣的开发者可以去苹果开发者中心(https://developer.apple.com/)上查询每个事件发生的时机,本书在此不做详细解释。

最后要讲述的是UIControl提供的至关重要的方法addTarget:

此方法可以为控件添加相应的action事件,就是之前章节提到的target-action的响应模式,这个方法会在之后的大部分示例中展示给读者。在简单介绍了UIControl这个控件基类之后,本书将开始介绍每个控件的使用方法以及注意事项。