一、概述
1. UIControl 对象
2. UIControl 属性
@property(nonatomic,getter=isEnabled)BOOL enabled;
2)当用户选择控件时,该属性会变为 YES;默认为 NO,子类通常可以通过设置该属性来选中子类控件
@property(nonatomic,getter=isSelected)BOOL selected;
3)设置控件的高亮状态;默认为 NO
@property(nonatomic,getter=isHighlighted)BOOL highlighted;
4)设置控件在垂直方向上如何布置自身的内容;默认为 UIControlContentVerticalAlignmentCenter 居中
@property(nonatomic)UIControlContentVerticalAlignment contentVerticalAlignment;
UIControlContentVerticalAlignmentCenter 枚举如下 :
typedef NS_ENUM(NSInteger, UIControlContentVerticalAlignment) {
UIControlContentVerticalAlignmentCenter = 0, // 居中对齐
UIControlContentVerticalAlignmentTop = 1, // 顶端对齐
UIControlContentVerticalAlignmentBottom = 2, // 底端对齐
UIControlContentVerticalAlignmentFill = 3, // 填满整个控件
};
@property(nonatomic)UIControlContentHorizontalAlignment contentHorizontalAlignment;
UIControlContentHorizontalAlignmentCenter枚举如下 :
typedef NS_ENUM(NSInteger, UIControlContentHorizontalAlignment) {
UIControlContentHorizontalAlignmentCenter = 0, // 居中对齐
UIControlContentHorizontalAlignmentLeft = 1, // 左端对齐
UIControlContentHorizontalAlignmentRight = 2, // 右端对齐
UIControlContentHorizontalAlignmentFill = 3, // 填满整个控件
};
6)获取控件的状态
@property(nonatomic,readonly)UIControlState state;
UIControlState枚举如下 :
typedef NS_OPTIONS(NSUInteger, UIControlState) {
UIControlStateNormal = 0, // 普通状态
UIControlStateHighlighted = 1 << 0, // 高亮状态
UIControlStateDisabled = 1 << 1, // 选中状态
UIControlStateSelected = 1 << 2, // 禁用状态
UIControlStateFocused NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 3, // 聚焦状态
UIControlStateApplication = 0x00FF0000, // 当用作应用标志时
UIControlStateReserved = 0xFF000000 // 内部框架预留,无意义
};
7)添加 目标-动作对为不同的事件类型
- (void)addTarget:(nullableid)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
UIControlEvent 枚举如下 :
typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
UIControlEventTouchDown = 1 << 0, // 单点触摸事件,用户触摸屏幕时
UIControlEventTouchDownRepeat = 1 << 1, // 多点触摸事件,用于第二、第三根手指触摸时
UIControlEventTouchDragInside = 1 << 2, // 触摸在控件窗口内拖动时
UIControlEventTouchDragOutside = 1 << 3, // 触摸在控件窗口外拖动时
UIControlEventTouchDragEnter = 1 << 4, // 触摸在窗口之外拖动到窗口内部时
UIControlEventTouchDragExit = 1 << 5, // 触摸在窗口之内拖动到窗口外部时
UIControlEventTouchUpInside = 1 << 6, // 在控件之内的触摸抬起时
UIControlEventTouchUpOutside = 1 << 7, // 在控件之外的触摸抬起时
UIControlEventTouchCancel = 1 << 8, // 触摸事件取消(例如正在触摸时有电话打进来)
UIControlEventValueChanged = 1 << 12, // 当控件的值在发生改变时,用于滑块、分段控件、以及娶她取值控件
UIControlEventPrimaryActionTriggered NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 13, // semantic action: for buttons, etc.
UIControlEventEditingDidBegin = 1 << 16, // 当文本控件开始编辑时,用于 UITextField
UIControlEventEditingChanged = 1 << 17, // 当文本控件的文本被改变时,用于 UITextField
UIControlEventEditingDidEnd = 1 << 18, // 当文本控件结束编辑时,用于 UITextField
UIControlEventEditingDidEndOnExit = 1 << 19, // 当文本控件内通过按下回车键结束编辑时
UIControlEventAllTouchEvents = 0x00000FFF, // 通知所有关于触摸的事件
UIControlEventAllEditingEvents = 0x000F0000, // 通知所有关于文本编辑的事件
UIControlEventApplicationReserved = 0x0F000000, // range available for application use
UIControlEventSystemReserved = 0xF0000000, // range reserved for internal framework use
UIControlEventAllEvents = 0xFFFFFFFF // 通知所有事件
};
- (void)removeTarget:(nullableid)target action:(nullableSEL)action forControlEvents:(UIControlEvents)controlEvents;
@property(nonatomic,readonly)NSSet *allTargets;
10)获取所有的事件类型
@property(nonatomic,readonly)UIControlEvents allControlEvents;