加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift - UIGestureRecognizer

发布时间:2020-12-14 05:06:50 所属栏目:百科 来源:网络整理
导读:import UIKitclass ViewController: UIViewController{ override func viewDidLoad() { super.viewDidLoad() //SwipeGestureRecognizer:滑动手势 let swipe = UISwipeGestureRecognizer(target: self,action: #selector(swipeUp(_ :))) //设置监听滑动的方
import UIKit
class ViewController: UIViewController{
    override func viewDidLoad() {
        super.viewDidLoad()
        //SwipeGestureRecognizer:滑动手势
        let swipe = UISwipeGestureRecognizer(target: self,action: #selector(swipeUp(_ :)))
        //设置监听滑动的方向为向上
        swipe.direction = .up
        //添加到视图中
        self.view.addGestureRecognizer(swipe)
        
        //ScreenEdgePanGestureRecognizer:边缘滑动(是UISwipeGestureRecognizer的子类)
        let edgeSwipe = UIScreenEdgePanGestureRecognizer(target: self,action:#selector(ViewController.edgeSwipe))
        //设置监听滑动的方向
            edgeSwipe.edges = .left//从左边缘往右滑
        self.view.addGestureRecognizer(edgeSwipe)
        
        //UITapGestureRecognizer:轻击手势
        //单击监听
        let tapSingle=UITapGestureRecognizer(target:self,action:#selector(Tap(_:)))
        tapSingle.numberOfTapsRequired = 1//连续点击次数
        tapSingle.numberOfTouchesRequired = 1//同时按下次数
        //双击监听
        let tapDouble=UITapGestureRecognizer(target:self,action:#selector(Tap(_:)))
        tapDouble.numberOfTapsRequired = 2
        tapDouble.numberOfTouchesRequired = 1
        //如果一个空间同时有单击,双击爽个事件要想点击双击不触发单击事件,使用以下方法
        tapSingle.require(toFail: tapDouble)
        //开启用户交互(如VIew使用该手势需要更换画面,需开启交互)
        self.view.isUserInteractionEnabled = true
        self.view.addGestureRecognizer(tapSingle)
        self.view.addGestureRecognizer(tapDouble)
        
        //UIPinchGesturnRecognizer:捏合手势
        let pinch = UIPinchGestureRecognizer(target: self,action: #selector(Pinch(_:)))
        self.view.addGestureRecognizer(pinch)
        
        //UIRotationGestrueRecognizer:旋转手势
        let rotation = UIRotationGestureRecognizer(target: self,action: #selector(Rotation(_:)))
        self.view.addGestureRecognizer(rotation)
        
        //UIPanGestureRecognizer:拖动手势
        let View = UIView(frame: CGRect(x: 0,y: 0,width: 50,height: 50))
        View.backgroundColor = UIColor.black
        View.center = self.view.center
        View.tag = 1
        self.view.addSubview(View)
        
        let pan = UIPanGestureRecognizer(target: self,action: #selector(Pan(_:)))
        View.addGestureRecognizer(pan)
        
        //UILongPressGestureRecognzier:长按
        let longPress = UILongPressGestureRecognizer(target: self,action: #selector(LongPress(_:)))
        //设置长按手势按下多少时长才被监听
        longPress.minimumPressDuration = 1.0
        //取消长按手势
        longPress.allowableMovement = 20.0//受灾在按下状态下距离超过20视为非长按手势。此属性默认值为10
        self.view.addGestureRecognizer(longPress)
    }
    //响应监听事件
    @objc func swipeUp(_ recognizer:UISwipeGestureRecognizer){
        let point = recognizer.location(in: self.view)
        print(point.x)
        print(point.y)
    }
    
    @objc func edgeSwipe()
    {
        print("使用了边缘滑动手势")
    }
    
    @objc func Tap(_ cognizer:UITapGestureRecognizer)
    {
        let Tapnumber = cognizer.numberOfTapsRequired
        print("你点击了:(Tapnumber)")
    }
    
    @objc func Pinch(_ recognizer:UIPinchGestureRecognizer){
        print("捏合比例为:(recognizer.scale)")
    }
    
    @objc func Rotation(_ recognizer:UIRotationGestureRecognizer){
        print("旋转角度为:(recognizer.rotation*(180/CGFloat.pi))")
    }
    
    @objc func Pan(_ recognizer:UIPanGestureRecognizer){
        let point = recognizer.location(in: self.view)
        let View = self.view.viewWithTag(1)
        View?.center = point
        //也可以用recognizer.view获取View对象
        recognizer.view?.center = point
    }
    
    @objc func LongPress(_ sender:UILongPressGestureRecognizer){
        if sender.state == .began{
            print("长按开始")
        }else{
            print("长按结束")
        }
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读