码迷,mamicode.com
首页 > 其他好文 > 详细

UIVIew的拖拽及对UIResponder、UITouch的稍加说明

时间:2016-08-02 18:48:55      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

UIView的拖拽
1.自定义一个UIView
2.在UIView的.m文件中实现touchMoved方法
实现代码如下
#import "kds.h"

@implementation kds

- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    //获取当前点
    CGPoint curP = [touch locationInView:self];
   //获取上一个点
    CGPoint preP = [touch previousLocationInView:self];
    //获取X轴偏移量
    CGFloat offsetX = curP.x - preP.x;
    //修改View的位置(frame、center、transform)
    
    //self.transform = CGAffineTransformMakeTranslation(offsetX, 0);

//获取Y轴的偏移量
    CGFloat offsetY = curP.y - preP.y;
    
self.transform = CGAffineTransformTranslate(self.transform, offsetX, offsetY);
}
补充说明
iOS中的事件可以分为3大类型
1.触摸事件 2.加速计事件 3.远程控制事件
 在IOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接受并处理事件。我们称之为“响应者对象”
UIApplication/UIViewController/UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件
UIResponder内部提供了以下方法来处理事件
1.触摸事件:touchesBegan、touchesMoved、touchesEnded、touchesCancelled
2.加速计事件:motionBegan/motionEnded/motionCancelled
3.远程控制事件:remoteControlReceivedWithEvent
 
UITouch
当用户用一根手指触摸屏幕时,会创建一个与手指相关联的UITouch对象
一根手指对应一个UITouch对象
UITouch的作用
保存着跟手指相关的信息,比如触摸的位置、事件、阶段
当手指移动时,系统会更新同一个UITouch对象,使之能够一直保存该手指在的触摸位置
当手指离开屏幕时,系统会销毁相应的UITouch对象
UITouch的属性
1.触摸产生时所处的窗口UIwindow
2.触摸产生时所处的试图UIView
3.短时间内点按屏幕的次数NSInteger tapcount
4.记录了触摸事件产生或变化时的时间,单位是秒NSTimeInterval
5.当前触摸事件所处的状态UITouchPhase
UITouch的方法
1.locationInView
返回值表示触摸在View上的位置
这里返回的位置是针对View的坐标系的(以View的左上角为原点(0.0))调入时传入的参数为nil的话返回的是触摸点在UIWindow的位置
2.previousLocaitonInView
该方法记录了前一个触摸点的位置
 
UIEvent
每产生一个事件,就会产生一个UIEvent对象
UIEvent:称为事件对象,记录事件产生的时刻和类型
常见属性
1.事件类型
UIEventType 
UIEventSubtype
2.事件产生的时间
NSTimeInterval
UIEvent还提供了相应的方法可以获得在某个View上面的触摸对象(UITouch)
 
 
 
 

UIVIew的拖拽及对UIResponder、UITouch的稍加说明

标签:

原文地址:http://www.cnblogs.com/dongmengl/p/5730011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!