您的位置:首页 > 产品设计 > UI/UE

iOS-UIControls介绍

2015-10-06 13:57 435 查看

iOS-UIControls类介绍

UIControl的继承关系

UIControl是 UIKit中UISwitch(开关)、UIButton(按钮)、UISegmentedControl(分段控件)、UISlider(滑块)、UITextField(文本字段控件)、UIPageControl(分页控件)等控件的父类。同时UIControl也是UIView的子类,当然它也是UIResponse的子类。

下面是UIControl的关系图



UIControl的作用

从上面的关系图中,我们可以看到,UIControl是UIView的子类,因此我们可以像编写UIView一样编写控件,可以调用
addSubview:
等方法。

同时他也是UIResponse的子类,也是一个响应者。当对屏幕触发一个点击事件,事件通过响应链传到UIContol的子类上。此时将触发以下事件:

UIResponder父类中触发手势方法(如touchBegan:withEvent)

UIControl对UIResponse中的手势方法进行封装,转换成一个简单的事件。通过指定的事件处理机制,调用对应的方法。

因此,简单的理解就是,UIControl把复杂的触摸事件封装成了简单的易于使用的控件事件。例如通过UIControl对象处理后,按下按钮的事件就被封装成一个控件事件,而不用去判断触摸屏幕的整个操作过程。

例如按钮的单击事件:UIControlEventTouchUpInside

UIControl-Tracking属性介绍

查看UIControl的声明文件,发现有一个属性不太理解,这里特别来说明一下:

@property(nonatomic,readonly,getter=isTracking) BOOL tracking;

**解释**
A Boolean value that indicates whether the receiver is currently tracking touches related to an event. (read-only)
The value is YES if the receiver is tracking touches; otherwiseNO.

**我的理解**
属性含义:track--跟踪。顾名思义就是当对手势进行跟踪时,此属性为yes。即对control控件使用pan,pinch手势时,此属性为yes。

属性作用:tracking为read-only,只可以观察。用来查看control控件是否处于跟踪手势状态。


既然tracking属性为read-only,只读属性。那么,我们通过什么来控制跟踪状态,我们又通过什么来对pan,pinch手势进行响应呢?

在声明文件tracking下方,有这4个方法,我们可以通过这4个方法来响应手势。

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)cancelTrackingWithEvent:(UIEvent *)event;


UIControl自定义控件

自定义
滑动进度条按钮
,用到了
tracking跟踪属性
,也触发了一个事件消息。

代码比较简单,我在这个不具体说明了。下面是效果图:



代码地址:

http://download.csdn.net/detail/daiyibo123/9158095

转载地址

http://blog.csdn.net/ryantang03/article/details/7754597

http://blog.csdn.net/iukey/article/details/7300412
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: