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

UI第四天 触摸 响应者链 target-action

2015-11-14 17:13 190 查看
UIEvent: 事件,是由硬件捕捉的一个表示用户操作设备的对象

分三类: 触摸事件(touch),晃动事件(motion),远程控制事件

触摸事件4个方法 也就是4个过程

1.touchBegan 开始触摸

2.touchMoved 触摸中

3.touchEnd 触摸结束

4.touchCancel 意外退出

我们可以可触摸实现手势, 需要一个重要的类UITouch

UITouch就代表手指在屏幕上的手指,可以获取触摸时间和触摸位置 即UITouch保存手指信息(触摸的点) 通过anyObject方法可以取的点信息

locationInView 可以取得当前触摸的点

previousLocationInView 可以取得当前点的上一个点

可以通过这两个点的偏移量,再更改中心点来实现视图移动

晃动事件:motion

过程有3步: motionBegan

motionEnd

motionCancel

基本上把东西写到End上面, 晃动结束后显示, 没有晃动中的方法

响应者链

UIResponder 响应者类

IOS中所有能响应事件对象都是响应者

响应者链分为两个过程

1.查询过程 应用程序->self.window->控制器->self.view->view上的子视图,一一查找 直到定位到被点击的子视图 查询过程就结束 (从里到外 )

2.响应过程

首先看本视图能不能处理事件(实现了touchBegin等方法 就叫做可以处理事件)->父视图->一层一层往下看能不能处理,直到window,如果都不能出来 该次点击时间 被遗弃(无效点击)

注意:UIILabel UIImageView的交互 默认是关闭的

如果父视图是关闭的话,子视图是无法响应的

开启响应者链的属性是 userInteractionEnabled = YES;

target-action

触碰View 会实现类似按钮点击的功能

button添加按钮的功能

[button addTarget:<#(id)#> action:<#(SEL)#> forControlEvents:<#(UIControlEvents)#>]

如果我们想要Buttonview(新类)实现按钮点击的功能,我们就必须实现添加按钮的功能

分析:addTarget:<#(id)#> action:<#(SEL)# >

对象 方法

我们可以重写Buttonview的初始化方法,将这两个添加进来,然后将其连接起来

然后在触摸结束方法里面调用了下面的一个方法

连接调用了一个[self.target performSelector:self.action withObject:self];方法

这个方法实现的是: self.target对象调用action方法

,让一个对象 取调用这个对象类里的方法

object 可携带的参数(如果不写的话,那么你在初始化类过后,你的方法也就没有参数)

performSelector: 方法执行器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: