iOS开发脚踏实地学习day13-触摸事件和抽屉效果

iOS事件:
触摸事件、加速度事件、远程控制事件


响应者对象
只有继承UIRespnder的对象才能接收和处理事件

UIView是UIResponder的子类
touchesBegan
touchesMoved
touchesEnded
touchesCancelled(电话进来打断)


一个手指就是一个UITouch对象;
tapCount:点击次数
phase:阶段

触摸事件的传递是从父控件传递到子控件
如果父控件不能接收触摸事件,那么子控件就不能触摸事件
UIApplication->UIWindow->白色-》橙色...
1、不接收用户交互
userInteractionEnabled = NO
2、隐藏
hidden = YES
3、透明
alpha = 0.0~0.01
提示:UIImageView 的userInteractionEnabled默认就是0,因此UIImageView以及它的子控件默认是不能接收触摸事件的



如何知道最合适的控件来处理事件?
后添加的控件在上面,从后往前遍历子控件


hitTest方法
什么时候调用:当事件传递给一个控件的时候就会调用
返回的View,就认为是最合适的控件,处理触摸事件。


pointInside方法
判断点在不在方法调用者的坐标系上



找最合适的view
1.判断自己能否接收事件
2.判断点在不在当前控件上面
3.去找有没有比自己更合适的view
从后往前遍历自己的子控件 ,找到后return之
4.子控件没找到,return self;

1.通过KVO,监听mainView的frame属性改变

改变mainView的位置是通过改变center来实现的,而实际监听的是frame属性改变,center位置的变化是会引起frame的变化的,结果却并没有监听到frame属性的改变;

解决方法是,实际代码写的是改变center,就监听center的改变,实际代码写的是frame,就监听frame的改变;

还有要注意的是,通过设置center和frame.size来控制控件的位置,只有先设置frame.size再设置center,才能正确设置位置。(因为先设置center的话,origin会先跟着center变化)

由下图可知,可以根据redView的origin的X值来判断是向左滑动还是向右滑动。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值