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

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)

时间: 2024-10-06 06:05:30

UIVIew的拖拽及对UIResponder、UITouch的稍加说明的相关文章

ios开发事件处理之:一:UIView的拖拽

1.ios当中常?的事件?  触摸事件 ,加速计事件 ,远程控制事件 2.什么是响应者对象? 继承了UIResponds的对象我们称它为响应者对象 UIApplication.UIViewController.UIView都继承?自UIResponder 因此它们都是响应者对象,都能够接收并处理事件 3.为什么说继承了UIResponder就能够处理事件? 因为UIResponder内部提供了以下?方法来处理事件 ?比如 触摸事件会调?用以下?方法: - (void)touchesBegan:(

iOS边练边学--触摸事件以及能够拖拽的UIView的练习

一.用户在使用APP的过程中,会产生各种各样的事件.iOS中的事件可以分为3大类型: 二.响应者对象 在iOS中只有继承了了UIResponder的对象才能接受并处理事件,这样的对象称之为“响应者对象” UIApplication.UIViewController.UIView都继承自UIResponder,因此他们都是响应者对象,都能够接受并处理事件 UIResponder内部提供了以下方法来处理事件 三.练习中对UIView的触摸事件进行了熟悉 四.UITouch 一根手指对应一个UITou

ios手势识别之拖拽

1 #import "NJViewController.h" 2 3 @interface NJViewController () 4 @property (weak, nonatomic) IBOutlet UIView *customView; 5 6 @end 7 8 @implementation NJViewController 9 10 - (void)viewDidLoad 11 { 12 [super viewDidLoad]; 13 UIPanGestureRecog

IOS UIWebView去掉滚动条和黑色背景即拖拽后的上下阴影

隐藏滚动条和上下滚动时出边界的后面的黑色的背景 webView.backgroundColor=[UIColor clearColor]; for (UIView *aView in [webView subviews]) { if ([aView isKindOfClass:[UIScrollView class]]) { [(UIScrollView *)aView setShowsVerticalScrollIndicator:NO]; //右侧的滚动条 (水平的类似) for (UIVi

xib中关于拖拽手势的潜在错误

iOS开发拓展篇—xib中关于拖拽手势的潜在错误 一.错误说明 自定义一个用来封装工具条的类 搭建xib,并添加一个拖拽的手势. 主控制器的代码:加载工具条 封装工具条以及手势拖拽的监听事件 此时运行程序,程序直接崩溃,报错如下: 说明:手势不会有superView方法,superView是UIView的方法,说明我们错误的把手势对象当成是UIView来用了. 调试查看出现问题的原因: 出现问题的原因: 说明:通过lastObject取出来的对象是手势,而不是xib,因此出现上面的错误. 把la

手势图的设计原理(2)拖拽、捏合、轻扫、旋转

ViewController.m #import "ViewController.h" @interface ViewController (){    UIImageView *imageView;} @end @implementation ViewController - (void)viewDidLoad {    [super viewDidLoad];    self.view.backgroundColor = [UIColor whiteColor];       im

在view里面通过xib拖拽delegate的方法 numberOfComponentsInPickerView: : unrecognized selector sent to instance 0x7f9eae60a1c0

正常继承自UIView新建的view是不包含xib的自己新建的 xib 关联 view 以后,在 xib 上拖拽 tableView等包含有 delegate 的控件时,当和UIViewController一样直接拖拽代理的时候会出现-[ViewController numberOfComponentsInPickerView:]: unrecognized selector sent to instance 0x7f9eae60a1c0类似这样的崩溃现象 /Users/mac/Desktop/

iOS开发拓展篇—xib中关于拖拽手势的潜在错误

iOS开发拓展篇—xib中关于拖拽手势的潜在错误 一.错误说明 自定义一个用来封装工具条的类 搭建xib,并添加一个拖拽的手势. 主控制器的代码:加载工具条 封装工具条以及手势拖拽的监听事件 此时运行程序,程序直接崩溃,报错如下: 说明:手势不会有superView方法,superView是UIView的方法,说明我们错误的把手势对象当成是UIView来用了. 调试查看出现问题的原因: 出现问题的原因: 说明:通过lastObject取出来的对象是手势,而不是xib,因此出现上面的错误. 把la

IOS 手势学习(点击,长按,轻扫,拖拽,旋转,捏合缩放)

点击        UITapGestureRecognizer 长按        UILongPressGestureRecognizer 轻扫        UISwipeGestureRecognizer 拖拽        UIPanGestureRecognizer 旋转        UIRotationGestureRecognizer 捏合缩放 UIPinchGestureRecognizer 详细代码如下: #import "ViewController.h" @i