博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Touch Demo
阅读量:5333 次
发布时间:2019-06-15

本文共 2904 字,大约阅读时间需要 9 分钟。

#import "ViewController.h"

//定义两个全局变量View视图 

@interface ViewController () {

 

    UIView *_view1;

    UIView *_view2;

}

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    /*

    //创建子视图

    _view = [[UIView alloc] initWithFrame:CGRectMake(90, 90, 20, 20)];

    _view.backgroundColor = [UIColor greenColor];

    [self.view addSubview:_view];

     */

    

    _view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 90, 375, 120)];

    _view1.backgroundColor = [UIColor greenColor];

    [self.view addSubview:_view1];

    

    _view2 = [[UIView alloc] initWithFrame:CGRectMake(375, 90, 375, 120)];

    _view2.backgroundColor = [UIColor redColor];

    [self.view addSubview:_view2];

    

    

    //开启多点触摸,这个不能忘记

    self.view.multipleTouchEnabled = YES;

    

    //开启响应

    self.view.userInteractionEnabled = YES;

}

 

 

//触摸开始

//touches:手指数  event:点击事件

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

 

    //取得touch

    UITouch *touch = [touches anyObject];

    

    //(1)取得触摸产生的时候所处的窗口

    UIWindow *window = touch.window;

    //取得当前的主窗口,

    UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;

    //或者

    keyWindow = self.view.window;

//    NSLog(@"window:%@   keyWindow:%@",window,keyWindow);    //地址一样,说明取得是主窗口

    

 

    //(2取得触摸所处的视图

    UIView *view = touch.view;

//    NSLog(@"view:%@    self.view:%@",view,self.view);

    

    //(3)点击的次数

    NSInteger count = touch.tapCount;

 

    //区别单击和双击手势:延迟调用单击,在一定时间以内如果执行双击,则取消单击事件

    if (count == 1) {

//        [self singleTap];

//延时调用

         [self performSelector:@selector(singleTap) withObject:nil afterDelay:0.2];

    }else if (count == 2) {

//        [self doubleTap];

        //取消单击

        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTap) object:nil];

        //执行双击

        [self doubleTap];

    }

    

    //声明周期

//    touch.phase

    

    //(4)获取点击时的坐标

    CGPoint point = [touch locationInView:touch.view];//touch比self好

//    NSLog(@"point:%@",NSStringFromCGPoint(point));

}

 

//单击事件

- (void)singleTap {

    NSLog(@"单击了");

}

 

//双击了

- (void)doubleTap {

    NSLog(@"双击了");

}

 

 

//触摸移动

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

 

    //取得手指的坐标(当前位置)

//    UITouch *touch = [touches anyObject];

//    CGPoint point = [touch locationInView:touch.view];

//    _view.center = point;

    

    //获取前一个位置坐标

    UITouch *touch = [touches anyObject];

    CGPoint previousPoint = [touch previousLocationInView:touch.view];

    

    //获取当前的

    CGPoint currentPoint = [touch locationInView:touch.view];

    

    //获取水平方向的差值

    CGFloat subX = currentPoint.x - previousPoint.x;

    

    _view1.frame = CGRectMake(CGRectGetMinX(_view1.frame)+subX, 90, 375, 120);

    _view2.frame = CGRectMake(CGRectGetMinX(_view2.frame)+subX, 90, 375, 120);

    

}

 

//触摸结束

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

 

//    NSLog(@"touchesEnded");

}

 

//触摸中断(取消)

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

 

//    NSLog(@"touchesCancelled");

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

@end

file:///Users/mac/Desktop/屏幕快照%202015-09-17%20上午8.56.52.png

转载于:https://www.cnblogs.com/answer-Allen/p/4815277.html

你可能感兴趣的文章
《分布式服务架构:原理、设计于实战》总结
查看>>
java中new一个对象和对象=null有什么区别
查看>>
字母和数字键的键码值(keyCode)
查看>>
协议和代理
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法(转)...
查看>>
[转]iOS学习笔记(2)--Xcode6.1创建仅xib文件无storyboard的hello world应用
查看>>
Spring mvc初学
查看>>
python标准库学习7
查看>>
有意思的代码片段
查看>>
C8051开发环境
查看>>
VTKMY 3.3 VS 2010 Configuration 配置
查看>>
255. Verify Preorder Sequence in Binary Search Tree
查看>>
01_1_准备ibatis环境
查看>>
windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决
查看>>
[fowarding]Ubuntu jsp平台使用JDBC来连接MySQL数据库
查看>>
蒲公英v5p%n搭建局域网后用nginx做代理的配置
查看>>
函数式编程
查看>>
JavaScript中的BOM和DOM
查看>>
bzoj 1606: [Usaco2008 Dec]Hay For Sale 购买干草
查看>>