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 ...
随机推荐
- SSH超时断开(ClientAliveInterval和ClientAliveCountMax )的使用
有 2个方法 1 配置服务器 打开 /etc/ssh/sshd_config 找到 ClientAliveInterval 参数,如果没有就自己加一行 数值是秒,比如你设置为300,就是5分钟. Cl ...
- 根据给定的日期给 dateEdit 控件增加颜色
private void dateEdit1_DrawItem(object sender, DevExpress.XtraEditors.Calendar.CustomDrawDayNumberCe ...
- LeetCode题解——Unique Path(DP与优化)
题目:A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ...
- lighttpd+fastcgi模块分析
一开始不怎么明白fastcgi和cgi的区别,查了资料说,fastcgi多了一个进程池,不要每次都fork和退出 这个不是重点,还是对着代码看吧 怎样在lighttpd运行php呢,需要下面这样配置 ...
- CentOS6 搭建git
rpm -qa | grep zlib-devel 查看是否安装过 ----------------------------------------------------------------- ...
- notepad++汉字突然横过来了
修改notepad++,汉字突然横过来了,如图, 百度了一下,原来是因为选择的字体"@微软雅黑"前面的@符号惹的祸,改成"微软雅黑"就没事了.
- JavaIO流(02)RandomAccessFile类详解
RandomAccessFile类 该类主要是对文件内容进行操作,可以随机的读取一个文件中指定位置的数据: 但是如果想实现这样的功能,则每个数据的长度应该保持一致: 构造方法: 接受File类 ...
- hdu2248
纷菲幻剑录 之 十年一剑 Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- K - 最少拦截系统
Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不 能超过前一发的高度.某天,雷达 ...
- ActiveMQ学习笔记(二) JMS与Spring
上文可见,JMS Native API使用起来不是特别方便.好在Spring提供了很好的JMS支持. (一)配置ConnectionFactory 如果使用连接池的话,不要忘记activemq-poo ...