UIControl
是UIView
的子类,本身包含了一些属性和方法,但是不能直接使用UIControl
类,只能通过继承的方式为子类提供公共的接口和动作结构。如果自定义一个可交互控件,可以继承于UIControl
而非UIView
。可查看iOS UIView控件。
1. UIControl的重要方法
action
对象的分发
// 发送与指定类型相关的所有行为消息。我们可以调用控件的这个方法来发送参数controlEvents指定的消息
- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents;
// 将消息转发给UIApplication,在它的sendAction:to:fromSender:forEvent:方法中将消息分发到指定的target上
// 如果没有指定target,派发给响应链中第一个愿意处理这个消息的对象中。
- (void)sendAction:(SEL)action to:(nullable id)target forEvent:(nullable UIEvent *)event;
Target-Action
管理
// 添加一个action对象
- (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
// 删除一个action对象
- (void)removeTarget:(nullable id)target action:(nullable SEL)action forControlEvents:(UIControlEvents)controlEvents;
跟踪触摸事件
// 跟踪开始
- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(nullable UIEvent *)event;
// 跟踪移动
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(nullable UIEvent *)event;
// 跟踪结束
- (void)endTrackingWithTouch:(nullable UITouch *)touch withEvent:(nullable UIEvent *)event;
// 跟踪取消
- (void)cancelTrackingWithEvent:(nullable UIEvent *)event;
2. 交互事件UIControlEvents
事件 | 说明 |
---|---|
UIControlEventTouchDown | 控件被按下去的事件 |
UIControlEventTouchDownRepeat | 控件被重复点击的时间,点击次数超过一次 |
UIControlEventTouchDragInside | 在控件范围内按下并拖动的事件 |
UIControlEventTouchDragOutside | 在控件范围内按下并在控件外面拖动的事件 |
UIControlEventTouchDragEnter | 从控件范围外拖动到控件范围内的事件 |
UIControlEventTouchDragExit | 从控件范围内拖动到控件范围外的事件 |
UIControlEventTouchUpInside | 点击控件后在控件范围内释放触发事件 |
UIControlEventTouchUpOutside | 点击控件后在控件范围外释放触发事件 |
UIControlEventTouchCancel | 触摸取消事件 |
UIControlEventValueChanged | 当控件的值发生改变时,发送通知。用于滑块,分段控件,以及其他取值控件 |
UIControlEventEditingDidBegin | 文本控件开始编辑时发送通知 |
UIControlEventEditingChanged | 文本控件中的内容被改变时发送通知 |
UIControlEventEditingDidEnd | 文本控件结束编辑的时候发送通知 |
UIControlEventEditingDidEndOnExit | 文本控件内通过按下回车结束编辑时,发送通知 |
UIControlEventAllTouchEvents | 通知所有触摸事件 |
UIControlEventAllEditingEvents | 通知所有关于文本编辑的时间。 |
UIControlEventApplicationReserved | 为应用程序预留 |
UIControlEventSystemReserved | 为系统内部框架预留 |
UIControlEventAllEvents | 通知所有事件 |
3. 控件的基本状态UIControlState
状态 | 说明 |
---|---|
UIControlStateNormal | 控件的正常状态 |
UIControlStateHighlighted | 控件的高亮状态 |
UIControlStateDisabled | 控件的禁用状态 |
UIControlStateSelected | 控件的选择状态 |
UIControlStateFocused | 控件获取焦点状态 |
UIControlStateApplication | 可供应用程序使用状态 |
UIControlStateReserved | 为系统内部框架预留状态 |