swift - UIGestureRecognizer 于几种常用手势

手势基础类:UIGestureRecognizer(手势识别器)

手势识别对象常常用于触摸序列或者其他输入的逻辑判断,并对该识别进行操作。

其具体的子类有以下七种

1、UITapGestureRecognizer 轻点手势识别

2、UIPinchGestureRecognizer 捏合手势识别对象

3、UIRotationGestureRecognizer 旋转手势识别 

4、UISwipeGestureRecognizer 轻扫手势识别

5、UIPanGestureRecognizer 拖动手势识别

6、UIScreenEdgePanGestureRecognizer 屏幕边缘拖动手势识别

7、UILongPressGestureRecognizer 长按手势识别

常用的属性于方法:

常用方法:

1、init(target: Any?, action: Selector?) 初始化手势方法

2、addTarget(_ target: Any, action: Selector) 手势于视图绑定方法

3、removeTarget(_ target: Any?, action: Selector?) 手势于视图解除绑定方法

4、location(in view: UIView?) -> CGPoint 手势在视图中的位置

5、location(ofTouch touchIndex: Int, in view: UIView?) -> CGPoint 详细手势在视图中的位置

// UIGestureRecognizerDelegate 中的代理方法

1、gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool 

手势识别器是否解释此次手势

2、gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool

手势识别器是否接受触摸对象

3、gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer

shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool

两个手势是否同时识别

4、

gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer

shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool

是否要求另一个手势识别器失败才可进行响应

常用属性:

1、state 识别器状态

2、isEnabled 是否可用

3、view 绑定的视图

4、cancelsTouchesInView 在视图中取消手势识别

5、delaysTouchesBegan 延迟手势开始

6、delaysTouchesEnded 延迟手势结束

常用的几种手势:

1、轻点手势:UITapGestureRecognizer

例子:

/*常用轻点手势

     * 常用于键盘回收,事件一次性响应等操作

     */

    func TapGestureRecognizer() -> Void {

        let tap:UITapGestureRecognizer = UITapGestureRecognizer.init()

        tap.numberOfTapsRequired = 2 //轻点次数

        tap.numberOfTouchesRequired = 1 //手指个数

        tap.delegate = self

        tap.addTarget(self, action: #selector(tapAction(action:)))

        self.view.addGestureRecognizer(tap)

    }

    /*轻点手势的方法*/

    @objc func tapAction(action:UITapGestureRecognizer) -> Void {

        print("双击打印")

    }

    

    /*手势识别器代理方法*/

    // 手势是否发生

    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {

        if gestureRecognizer.state == .possible {

            print("手势已经发生")

            return true

        } else if gestureRecognizer.state == .changed{

            print("手势发生变化")

            return false

        }

        return true

    }

    

    /*绑定对象是否接受该触摸对象*/

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {

        /* yes 视图响应

         * no 视图不响应

         */

        return true

    }

    /*手势是否进行接受按下操作,不知到干嘛用的*/

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive press: UIPress) -> Bool {

        return true

    }

    /*是否两个手势同时识别*/

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {

        return false

    }

    /*是否要求另一个手势识别器失败才可进行响应(手势失败的要求)*/

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {

        return false

    }

2、拖拽手势

/*拖拽手势*/

    func pan() -> Void {

        let pan:UIPanGestureRecognizer = UIPanGestureRecognizer.init(target: self, action: #selector(panAction(pan:)))

        /*最大最小的手势触摸次数*/

        pan.minimumNumberOfTouches = 1

        pan.maximumNumberOfTouches = 3

        self.view.addGestureRecognizer(pan)

    }

    @objc func panAction(pan:UIPanGestureRecognizer) -> Void {

        let orgin:CGPoint = pan.translation(in: self.view)

        print("orgin:\(orgin)")

    }

3、 长按手势

/*长按手势*/

    func long() -> Void {

        let long:UILongPressGestureRecognizer = UILongPressGestureRecognizer.init(target: self, action: #selector(longAction(long:)))

        

        self.view.addGestureRecognizer(long)

    }

    @objc func longAction(long:UILongPressGestureRecognizer) -> Void {

        print("惊醒长按")

    }

4、清扫手势

/*清扫手势*/

    func swip() -> Void {

        let swip:UISwipeGestureRecognizer = UISwipeGestureRecognizer.init(target: self, action: #selector(swipAction(swip:)))

        swip.direction = [.right , .left]

        self.view.addGestureRecognizer(swip)

    }

    @objc func swipAction(swip:UISwipeGestureRecognizer) -> Void {

        print("左右清扫")

    }



猜你喜欢

转载自blog.csdn.net/die_word/article/details/80814683
今日推荐