Touch Demo

#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

时间: 2024-12-13 14:10:18

Touch Demo的相关文章

Sencha Touch 之初接触

1.Sencha Touch开发与普通web开发有什么区别? Sencha Touch(为方便起见,本文后面一律简写为ST)页面的开发跟普通html页面相比,总体来说没有本质上的区别,只是引入了对html5和CSS3的支持,然后提供了对移动设备(iPad/iPhone/Android Mobile/Android Tablet/BlackBerry等)的特殊优化.事实上也正是因为html5和CSS3才使得ST可以实现如此美妙以至于可以媲美Native应用程序的交互效果. 2.特殊的Documen

linux touch 学习

linux touch命令学习 touch 意义:创建文件与修改文件 touch格式:touch [options] file-list 参数 file-list是touch将要创建或更新的文件路径名 选项 -a                    只更新访问时间,不改变修改时间 -c                    不创建不存在的文件 -m                   只更新修改时间,不改变访问时间 -r file               使用文件file的时间更新文件的时

Docker数据管理(四)

Docker数据管理 Docker数据分为两种: 数据卷 -v /data -v src:dst 数据卷容器 --volumes-from 数据卷 案例1:我们创建一个容器,起名叫nginx-volume-demo1挂载到容器中的/data目录下 [[email protected] ~]# docker run -d --name nginx-volume-demo1 -v /data nginx 96892a7bb67e9c687f29d07ea674ca527ab09dee6b0ec121

Docker-容器的操作

列出主机上的容器 列出正在运行的容器: docker ps 列出所有容器: docker ps -a 列出最近使用的容器,包括没有运行的:   docker ps -l 仅列出容器的ID,不包括没有运行的:      docker ps q 创建容器 参数: --name  指定容器的名字 --rm      容器运行完毕会自动删除 -i -t       创建一个提供交互式shell的容器. -d         在后台运行容器,并且打印出容器的ID. 创建交互式容器 [[email prot

每一个程序员需要了解的10个Linux命令

作为一个程序员,在软件开发职业生涯中或多或少会用到Linux系统,并且可能会使用Linux命令来检索需要的信息.本文将为各位开发者分享10个有用的Linux命令,希望对你会有所帮助. 以下就是今天我们要介绍的Linux命令: man touch, cat and less sort and grep cut sed tar find diff uniq chmod 接下来让我们逐一来详细介绍. 1.man命令 第一个你需要知道的Linux命令就是man命令,该命令可以显示指定命令的用法和描述.比

Linux安装Java开发环境

一.JDK安装 安装JDK的实现步骤(使用root用户登录安装,避免需要对文件授权) (1)下载JDK,JDK的存放目录一般存放于 /opt目录下(Oracle官网下载jdk,需要accept license,使用如下命令可直接通过用户验证)   wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.orac

Linux删除以减号开头的文件

2014年5月5日 10:33:47 原因:文件乱码了,乱码后以减号开头,删不掉 摘抄: 文件系统出现一个文件 -C.html 如何删除/新建?rm -- "-C.html" touch -- -demo.sh 可以创建 我的测试: 如果文件名字是乱码,则可以用tab键补全 复制: cp -- "-old.html"  new.html 移动等命令也应该是这种方式处理 文件名可以不加双引号

h5+js随机拖动鼠标产生动画效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

Linux实现KVM+QEMU+libvirt的虚拟机环境 并使用virsh对虚拟机进行管理

说明: 本文使用的实验环境是运行在windows10上的Vmware workstation 12.5 pro,宿主机操作系统是Ubuntu16(机器名称为KVM_test),kvm+qemu+libvirt安装在KVM_test上.运行在KVM_test上的客户机操作系统也是Ubuntu16(机器名称为test_ubuntu). 本实验需要的软件有Vmware workstation.vnc viewer.ubuntu16的ios镜像.Vnc viewer需要注册码,请自行百度查找. 本实验所