分类 手势 下的文章

手势的基本使用

都是很简单的使用,唯一需要注意的就是,在手势过程中一些的值的属性是累加的,需要做一些的处理,还有,这里测试是用的一个 UIImageView,这个控件默认是不接受事件的,需要设置下

//
//  ViewController.swift
//  手势事件
//
//  Created by admin on 16/1/26.
//  Copyright © 2016年 jin. All rights reserved.
//

import UIKit

class ViewController: UIViewController,UIGestureRecognizerDelegate {

    @IBOutlet weak var imageView: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.pan()
        // Do any additional setup after loading the view, typically from a nib.
    }
    // 拖拽事件
    func pan()
    {
        let pan = UIPanGestureRecognizer(target: self, action: "panFunc:")
        self.imageView.addGestureRecognizer(pan)
    }
    func panFunc(pan : UIPanGestureRecognizer)
    {
        self.imageView.center = CGPointMake(imageView.center.x + pan.translationInView(pan.view).x, imageView.center.y + pan.translationInView(pan.view).y)
        // 设置也是累加的,所以需要初始化下,不然特别快
        pan.setTranslation(CGPoint.zero, inView: pan.view)
    }
    // 同时响应两个事件
    // 允许响应多个事件,默认是只能响应一个事件的
    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }
    func gustures()
    {
        let rotation = UIRotationGestureRecognizer(target: self, action: "rotationFunc:")
        // 注意设置代理,只需要设置一个就ok了
        rotation.delegate = self
        self.imageView.addGestureRecognizer(rotation)
        let pinch = UIPinchGestureRecognizer(target: self, action: "pinchFunc:")
        self.imageView.addGestureRecognizer(pinch)
    }
    // 旋转事件
    func rotation()
    {
        let rotation = UIRotationGestureRecognizer(target: self, action: "rotationFunc:")
        self.imageView.addGestureRecognizer(rotation)
    }
    func rotationFunc(rotation:UIRotationGestureRecognizer)
    {
        self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, rotation.rotation)
        // 这里也是一个累加的值,所以需要设置下,不然特别快
        rotation.rotation = 0
    }
    // 捏合事件
    func pinch()
    {
        // 实例化对象
        let pinch = UIPinchGestureRecognizer(target: self, action: "pinchFunc:")
        // 添加到控件
        self.imageView.addGestureRecognizer(pinch)
    }
    func pinchFunc(pinch:UIPinchGestureRecognizer)
    {
        self.imageView.transform = CGAffineTransformScale(self.imageView.transform, pinch.scale, pinch.scale)
        // 注意这里重新赋值1了,因为这里的值是一个累加的值,不设置的话会特别快
        pinch.scale = 1
    }
    // 扫事件
    func swip()
    {
        // 创建对象并绑定目标
        let swip = UISwipeGestureRecognizer(target: self, action: "swipFunc:")
        // 响应的方向,是这个方向才会响应
        swip.direction = UISwipeGestureRecognizerDirection.Down
        // 添加事件到控件
        self.imageView.addGestureRecognizer(swip)
    }
    // 事件响应的函数
    func swipFunc(swip:UISwipeGestureRecognizer)
    {
        print(swip.state)
    }
    // 长按事件
    func long()
    {
        // 实例化事件对象
        let long = UILongPressGestureRecognizer()
        // 添加手势到控件
        self.imageView.addGestureRecognizer(long)
        // 设置属性
        // 按的时间到达设置的这个值之后才响应事件
        long.minimumPressDuration = 1
        // 允许移动的范围
        long.allowableMovement = 1
        // 设置代理
        long.delegate = self
        // 添加手势监听的方法
        long.addTarget(self, action: "longFunc:")
    }
    func longFunc(long:UILongPressGestureRecognizer)
    {
        if long.state == UIGestureRecognizerState.Began
        {
            print("开始")
        }
        else if long.state == UIGestureRecognizerState.Ended
        {
            print("结束")
        }
    }
    // 敲击事件
    func tab()
    {
        // 实例化事件对象
        let tab = UITapGestureRecognizer()
        // 点击的次数,达到这个次数才会响应
        tab.numberOfTapsRequired = 2
        // 设置代理
        tab.delegate = self
        // 把手势添加到view上
        self.imageView.addGestureRecognizer(tab)
        // 添加监听的方法
        tab.addTarget(self, action: "tabFunc:")
    }
    // 触摸响应的方法
    func tabFunc(tab:UITapGestureRecognizer)
    {
        print(tab)
    }
    // 是否接受触摸事件
    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
        return true
    }
}