(有码)和屏幕有关的事件传递Touch

事件传递
事件响应与传递

UIResponder 

响应传递方式

首先要找到在链状结构中,最为适合处理事件相应的组件,如果该组件对事件进行到了处理,那么该事件传递(告一段路),如果最为适合相应该事件的组件没有重写(UIResponder方法),那么他会想回找第二适合处理用户相应事件的组件,如果在一个链状结构中没有任何一个组件处理用户的触控事件,那么该事件将被丢弃

 UIApplication-Appdelgate->UIWindow->UIViewController->(UIView默认视图)->GPGreenView(UIResponder)


//当手指触碰到屏幕的时候触发的事件

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event


//当手指触碰到屏幕开始移动触发的事件

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

//UITouch 用户的手指,用户手指触控到屏幕,系统就会自动创建一个UITouch对象,并且在内部记录下来用户,触控的位置

    //UITouch对象被存储在 touches

    //1.可以获得手指当前坐标位置

    //2.可以获得移动之前的一个位置

    UITouch * touch = [touches anyObject];

    

//参考当前(自己)视图的坐标系,用户的触控位置应该在哪里

    CGPoint  currentPoint = [touch locationInView:self];

//移动时候的位置

    CGPoint  prePoint = [touch previousLocationInView:self];

//让视图进行跟随操作

    //1.手指在屏幕上移动的差值

    //2.Frame,x,y坐标增加差值范围

    //3.更新Frame

    CGRect rect = self.frame;

    rect.origin.x += currentPoint.x - prePoint.x;

    rect.origin.y += currentPoint.y - prePoint.y;


//通过Bounds属性实现跟随

//bounds属性x,y默认都是0,0,但是x,y值是可以发生改变

    //bounds 最主要的作用就是,改变当前视图所有子空间相对于自己的位置

    //(0,0,w,h)

    CGRect tmpBounds = self.bounds;

    tmpBounds.origin.x += prePoint.x -currentPoint.x;

    tmpBounds.origin.y += prePoint.y - currentPoint.y;

    self.bounds = tmpBounds;


}


//当手指移动触碰到屏幕以后触发的事件

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event


//当手指触发事件取消后触发的事件(例如:来电话事件优先级比qq优先级高)

- (void)touchesCancle:(NSSet *)thouches withEvent:(UIEvent *)event

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值