• 触摸与手势学习-swift


    触摸是一个UITouch对象,该对象放在一个UIEvent中,每个UIEvent包含一个或多个UITouch对象,每个UITouch对象对应一个手指。系统将UIEvent发送到应用程序上,最后应用程序将UIEvent传递给当前的一个UIView。

    触摸分为5个阶段:

    1)Began

    2)Moved

    3)Stationary

    4)Ended

    5)Cancelled(比如收到电话)

    //触摸事件
        
        //手指首次触摸到屏幕
        override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
            
            print("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
            
            print("(tapTouches)")
            
            
            //判断如果有两个触摸点
            if touches.count == 2
            {
                //获取触摸集合
                let twoTouches = (touches as NSSet).allObjects
                
                //获取触摸数组
                let first:UITouch = twoTouches[0] as! UITouch //第1个触摸点
                let second:UITouch = twoTouches[1]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 )
                
                print("两点间距离是:(initialDistance)")
            }
        }
        
        //手指在移动
        override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
            
            print("touchesMoved")
        }
        
        //触摸结束
        override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
            
            print("touchesEnded")
        }
        
        //触摸意外终止
        //模拟器演示:鼠标拖动的同时,按键盘command+shift+h 相当于点击手机home键,退出应用,触发touchesCancelled事件,在打电话、等情况下也会触发
        override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
            
            print("touchesCancelled")
        }

    手势UIGestureRecognizer:

    UITapGestureRecognizer

    UIPanGestureRecognizer

    UILongPressGestureRecognizer

    UIPinchGestureRecognizer

    UISwipeGestureRecognizer

     1        //点击事件
     2         let atap = UITapGestureRecognizer(target: self, action: "tapDo:")
     3         self.view.addGestureRecognizer(atap)
     4         atap.numberOfTapsRequired = 1 //单击次数
     5         atap.numberOfTouchesRequired = 1 //手指个数
     6         
     7         //拖动事件
     8         let aPan = UIPanGestureRecognizer(target: self, action: "handlenPan:")
     9         self.view.addGestureRecognizer(aPan)
    10         aPan.minimumNumberOfTouches = 1 //最少手指个数
    11         aPan.maximumNumberOfTouches = 3 //最多手指个数
    12         
    13         //长按事件
    14         let aLongPress = UILongPressGestureRecognizer(target: self, action: "longPress:")
    15         self.view.addGestureRecognizer(aLongPress)
    16         aLongPress.minimumPressDuration = 1 //需要长按的时间,最小0.5s
    17         
    18         //捏合事件
    19         let aPinch = UIPinchGestureRecognizer(target: self, action: "pinchDo:")
    20         self.view.addGestureRecognizer(aPinch)
    21         
    22         //旋转事件
    23         let aRotation = UIRotationGestureRecognizer(target: self, action: "rotatePiece:")
    24         self.view.addGestureRecognizer(aRotation)
    25         
    26         //轻扫事件--左轻扫
    27         let leftSwipe = UISwipeGestureRecognizer(target: self, action: "leftSwipe:")
    28         self.view.addGestureRecognizer(leftSwipe)
    29         leftSwipe.direction =  UISwipeGestureRecognizerDirection.Left
    30         
    31         //轻扫事件--右轻扫
    32         let rightSwipe = UISwipeGestureRecognizer(target: self, action: "rightSwipe:")
    33         self.view.addGestureRecognizer(rightSwipe)
    34         rightSwipe.direction =  UISwipeGestureRecognizerDirection.Right
    35         
    36         //轻扫事件--上轻扫
    37         let upSwipe = UISwipeGestureRecognizer(target: self, action: "upSwipe:")
    38         self.view.addGestureRecognizer(upSwipe)
    39         upSwipe.direction =  UISwipeGestureRecognizerDirection.Up
    40         
    41         //轻扫事件--下轻扫
    42         let downSwipe = UISwipeGestureRecognizer(target: self, action: "downSwipe:")
    43         self.view.addGestureRecognizer(downSwipe)
    44         downSwipe.direction =  UISwipeGestureRecognizerDirection.Down
     1 //手势
     2     
     3     //点击事件
     4     func tapDo(sender:UITapGestureRecognizer)
     5     {
     6         
     7         print("点击事件")
     8     }
     9     
    10     //拖动事件
    11     func handlenPan(sender:UIPanGestureRecognizer)
    12     {
    13         print("拖动事件")
    14         
    15         if sender.state == .Began
    16         {
    17             //拖动开始
    18         }
    19         else if sender.state == .Changed
    20         {
    21             //拖动过程
    22         }
    23         else if sender.state == .Ended
    24         {
    25             //拖动结束
    26         }
    27     }
    28     
    29     //长摁事件
    30     func longPress(sender:UILongPressGestureRecognizer)
    31     {
    32         print("长摁事件")
    33         
    34         
    35     }
    36     
    37     //捏合事件
    38     func pinchDo(sender:UIPinchGestureRecognizer)
    39     {
    40         print("捏合")
    41     }
    42     
    43     //旋转事件
    44     func rotatePiece(sender:UIRotationGestureRecognizer)
    45     {
    46         print("旋转")
    47     }
    48     
    49     
    50     //轻扫事件--左轻扫
    51     func leftSwipe(sender:UISwipeGestureRecognizer)
    52     {
    53         print("左轻扫")
    54     }
    55     
    56     //轻扫事件--右轻扫
    57     func rightSwipe(sender:UISwipeGestureRecognizer)
    58     {
    59         print("右轻扫")
    60     }
    61     
    62     //轻扫事件--上轻扫
    63     func upSwipe(sender:UISwipeGestureRecognizer)
    64     {
    65         print("上轻扫")
    66     }
    67     
    68     //轻扫事件--下轻扫
    69     func downSwipe(sender:UISwipeGestureRecognizer)
    70     {
    71         print("下轻扫")
    72     }
    73     

     

  • 相关阅读:
    在VS2010下,用C语言编写pthread多线程程序的配置
    java帮助文档系列JDK1.5 JDK1.6 JDK1.7官方中英完整版下载
    瑜伽练习day02----适合练习瑜伽时听的歌曲
    瑜伽练习day01----瑜伽练习的好处,坏处
    抛出错误Debug Assertion Failed!
    stringstream的基本用法
    AWS中S3的Bucket桶访问策略
    AWS中SQS的几项使用注意
    AWS在.Net中连接数据库时发生认证错误的解决办法
    .Net捕捉配置或程序错误
  • 原文地址:https://www.cnblogs.com/fengmin/p/5713562.html
Copyright © 2020-2023  润新知