ios开发——实用技术篇Swift篇&多点触摸与手势识别
多点触摸与手势识别
//点击事件
var atap = UITapGestureRecognizer(target: self, action: "tapDo:")
self.view.addGestureRecognizer(atap)
atap.numberOfTapsRequired = //单击次数
atap.numberOfTouchesRequired = //手指个数
//拖动事件
var aPan = UIPanGestureRecognizer(target: self, action: "handlenPan:")
self.view.addGestureRecognizer(aPan)
aPan.minimumNumberOfTouches = //最少手指个数
aPan.maximumNumberOfTouches = //最多手指个数
//长按事件
var aLongPress = UILongPressGestureRecognizer(target: self, action: "longPress:")
self.view.addGestureRecognizer(aLongPress)
aLongPress.minimumPressDuration = //需要长按的时间,最小0.5s
//捏合事件
var aPinch = UIPinchGestureRecognizer(target: self, action: "pinchDo:")
self.view.addGestureRecognizer(aPinch)
//旋转事件
var aRotation = UIRotationGestureRecognizer(target: self, action: "rotatePiece:")
self.view.addGestureRecognizer(aRotation)
//轻扫事件--左轻扫
var leftSwipe = UISwipeGestureRecognizer(target: self, action: "leftSwipe:")
self.view.addGestureRecognizer(leftSwipe)
leftSwipe.direction = UISwipeGestureRecognizerDirection.Left
//轻扫事件--右轻扫
var rightSwipe = UISwipeGestureRecognizer(target: self, action: "rightSwipe:")
self.view.addGestureRecognizer(rightSwipe)
rightSwipe.direction = UISwipeGestureRecognizerDirection.Right
//轻扫事件--上轻扫
var upSwipe = UISwipeGestureRecognizer(target: self, action: "upSwipe:")
self.view.addGestureRecognizer(upSwipe)
upSwipe.direction = UISwipeGestureRecognizerDirection.Up
//轻扫事件--下轻扫
var downSwipe = UISwipeGestureRecognizer(target: self, action: "downSwipe:")
self.view.addGestureRecognizer(downSwipe)
downSwipe.direction = UISwipeGestureRecognizerDirection.Down
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
//触摸事件
//手指首次触摸到屏幕
// override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
//2015年5月2后修改,另外:touches --》(touches as NSSet)
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
println("touchesBegan")
//获取touches数量
let numTouches = touches.count
//获取点击屏幕的次数
let tapTouches = (touches as NSSet).anyObject()?.tapCount
//获取事件发生时间
let timestamp = event.timestamp
//获取当前相对于self.view的坐标
let locationPoint = (touches as NSSet).anyObject()?.locationInView(self.view)
//获取上一次相对于self.view的坐标
let previousPoint = (touches as NSSet).anyObject()?.previousLocationInView(self.view)
//允许使用手势
self.view.userInteractionEnabled = true
//支持多点触摸
self.view.multipleTouchEnabled = true
println("\(tapTouches)")
//判断如果有两个触摸点
{
//获取触摸集合
let twoTouches = (touches as NSSet).allObjects
//获取触摸数组
let first:UITouch = twoTouches[] as! UITouch //第1个触摸点
let second:UITouch = twoTouches[]as! UITouch //第2个触摸点
//获取第1个点相对于self.view的坐标
let firstPoint:CGPoint = first.locationInView(self.view)
//获取第1个点相对于self.view的坐标
let secondPoint:CGPoint = second.locationInView(self.view)
//计算两点之间的距离
let deltaX = secondPoint.x - firstPoint.x;
let deltaY = secondPoint.y - firstPoint.y;
let initialDistance = sqrt(deltaX*deltaX + deltaY*deltaY )
println("两点间距离是:\(initialDistance)")
}
}
//手指在移动
// override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
//2015年5月2后修改
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
println("touchesMoved")
}
//触摸结束
// override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
//2015年5月2后修改
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
println("touchesEnded")
}
//触摸意外终止
//模拟器演示:鼠标拖动的同时,按键盘command+shift+h 相当于点击手机home键,退出应用,触发touchesCancelled事件,在打电话、等情况下也会触发
// override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
//2015年5月2后修改
override func touchesCancelled(touches: Set<NSObject>!, withEvent event: UIEvent!) {
println("touchesCancelled")
}
//手势
//点击事件
func tapDo(sender:UITapGestureRecognizer)
{
println("点击事件")
}
//拖动事件
func handlenPan(sender:UIPanGestureRecognizer)
{
println("拖动事件")
if sender.state == .Began
{
//拖动开始
}
else if sender.state == .Changed
{
//拖动过程
}
else if sender.state == .Ended
{
//拖动结束
}
}
//长摁事件
func longPress(sender:UILongPressGestureRecognizer)
{
println("长摁事件")
}
//捏合事件
func pinchDo(sender:UIPinchGestureRecognizer)
{
println("捏合")
}
//旋转事件
func rotatePiece(sender:UIRotationGestureRecognizer)
{
println("旋转")
}
//轻扫事件--左轻扫
func leftSwipe(sender:UISwipeGestureRecognizer)
{
println("左轻扫")
}
//轻扫事件--右轻扫
func rightSwipe(sender:UISwipeGestureRecognizer)
{
println("右轻扫")
}
//轻扫事件--上轻扫
func upSwipe(sender:UISwipeGestureRecognizer)
{
println("上轻扫")
}
//轻扫事件--下轻扫
func downSwipe(sender:UISwipeGestureRecognizer)
{
println("下轻扫")
}
ios开发——实用技术篇Swift篇&多点触摸与手势识别的更多相关文章
- ios开发——实用技术篇Swift篇&播放MP3
播放MP3 // MARK: - 播放MP3 /*----- mp3 ------*/ //定时器- func updateTime() { //获取音频播放器播放的进度,单位秒 var cuTime ...
- ios开发——实用技术篇Swift篇&地址薄、短信、邮件
//返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...
- ios开发——实用技术篇Swift篇&拍照
拍照 // MARK: - 拍照 func fromPhotograph() { if UIImagePickerController.isSourceTypeAvailable(.Camera) { ...
- ios开发——实用技术篇Swift篇&照片选择
照片选择 // MARK: - 选择照片 /*----- 选择照片 ------*/ @IBAction func addImageButtonClick() { let actionSheet = ...
- ios开发——实用技术篇Swift篇&系统声音
系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...
- ios开发——实用技术篇Swift篇&视频
视频 // MARK: - 播放视频 /*----- 播放视频 ------*/ func moviePlayerPreloadFinish(notification:NSNotification) ...
- ios开发——实用技术篇Swift篇&录音
录音 // MARK: - 录音 /*----- 录音 ------*/ var recorder:AVAudioRecorder? //录音器 var player:AVAudioPlayer? / ...
- ios开发——实用技术篇Swift篇&加速计和陀螺仪
加速计和陀螺仪 //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnim ...
- ios开发——实用技术篇OC篇&iOS的主要框架
iOS的主要框架 阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core ...
随机推荐
- Linux操作系统上用数据泵导库
1.在Linux上 创建物理目录dp_dir,存放数据库.dmp文件: 用root用户登录,切换到oracle用户,用oralce身份创建物理目录如下: [root@server36 oracle]# ...
- linux的文件属性介绍、目录及路径表示方法
一.认识linux文件 认识linux下的文件需要先学习命令:ls. 该命令用于显示指定目录下的内容,其中最常用的参数有: -l显示目录和文件的完整属性信息 -a显示所有文件和目录,包含隐藏文件和目录 ...
- <转>详解DNS的常用记录(上):DNS系列之二
详解DNS的常用记录(上) 在上篇博文中,我们介绍了DNS服务器的体系结构,从中我们了解到如果我们希望注册一个域名,那么必须经过顶级域名服务器或其下级的域名服务器为我们申请的域名进行委派,把解析权委派 ...
- 通过gdb跟踪Linux内核装载和启动可执行程序过程
作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的:通过对一个简单的可执 ...
- mysql_connect v/s mysql_pconnect
原文:mysql_connect v/s mysql_pconnect 译文:mysql_connect v/s mysql_pconnect 译者:dwqs 当需要使用PHP连接MySQL数据库的时 ...
- C# 字符串格式
1.数字补零输出字符串 String.Format("{0:D6}",123); 2.字符串靠左输出6位 String.Format("{0,-6}",&quo ...
- HDU-4738 Caocao's Bridges 边联通分量
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:在有重边的无向图中,求权值最小的桥. 注意trick就好了,ans为0时输出1,总要有一个 ...
- lsof,nc
安装nc, yum -y install nc; 用nc传输同步文件 A,被同步端-即需要备份复制端; tar -czvf - /|nc 192.168.1.204(同步机ip,复制文件位置机) 88 ...
- Gym 100818F Irrational Roots (数学)
Irrational Roots http://acm.hust.edu.cn/vjudge/contest/view.action?cid=101594#problem/F [题意]: 判断一个整系 ...
- Spring入门(6)-使用注解装配
Spring入门(6)-使用注解装配 本文介绍如何使用注解装配. 0. 目录 使用Autowired 可选的自动装配 使用Qualifier选择 1. 使用Autowired package com. ...