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

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: 方法执行器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值