UIControl

前言

  • UIControl 从字面翻译成为控制器,可以触发事件,达到和用户进行交互。

1、UIControl 的创建与设置

// 实例化 UIControl 对象
UIControl *control = [[UIControl alloc] initWithFrame:];
[self addSubview:control];
control.backgroundColor = [UIColor redColor];
// 设置位置尺寸
control.frame = CGRectMake(100, 100, 200, 100);

// 添加/删除触发事件
/*
- (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
- (void)removeTarget:(nullable id)target action:(nullable SEL)action forControlEvents:(UIControlEvents)controlEvents;

(id)target:                        响应对象,就是触发了 control 的某个事件后响应谁的方法
(SEL)action:                       触发某个事件后响应 target 的哪个方法
(UIControlEvents)controlEvents:    触发 control 的哪个事件

UIControlEventTouchDown              // 按下
UIControlEventTouchDownRepeat        // 双击,连续按下2次
UIControlEventTouchDragInside        // 内部拖动,不松手就触发事件,一直触发
UIControlEventTouchDragOutside       // 向外拖出,不松手就触发事件,一直触发
UIControlEventTouchDragEnter
UIControlEventTouchDragExit          // 向外拖出,不松手就触发事件,只触发一次
UIControlEventTouchUpInside          // 单击
UIControlEventTouchUpOutside         // 向外拖出,松手后触发事件
UIControlEventTouchCancel

UIControlEventValueChanged           // 数值改变,sliders, etc.

UIControlEventEditingDidBegin        // 开始编辑,UITextField
UIControlEventEditingChanged         // 编辑中
UIControlEventEditingDidEnd          // 结束编辑
UIControlEventEditingDidEndOnExit    // 结束编辑,'return key' ending editing

UIControlEventAllTouchEvents         // 所有事件,for touch events
UIControlEventAllEditingEvents       // 所有编辑事件,for UITextField
UIControlEventApplicationReserved    // range available for application use
UIControlEventSystemReserved         // range reserved for internal framework use
UIControlEventAllEvents
*/

// 添加触发事件
[control addTarget:self action:@selector(controlClick:) forControlEvents:UIControlEventTouchUpInside];

// 一个控件可以添加多个事件
[control addTarget:self action:@selector(controlClickOther:) forControlEvents:UIControlEventTouchDragOutside];

// 删除添加的事件
[control removeTarget:self action:@selector(controlClickOther:) forControlEvents:UIControlEventTouchDragOutside];

// 控件触发事件处理,一般响应方法都会有一个参数,没有也可以,该参数一般是触发的对象
- (void)controlClick:(UIControl *)control {

}

- (void)controlClickOther:(UIControl *)control {

}
posted @ 2018-12-04 20:34  CH520  阅读(483)  评论(0编辑  收藏  举报