手势的基本使用
都是很简单的使用,唯一需要注意的就是,在手势过程中一些的值的属性是累加的,需要做一些的处理,还有,这里测试是用的一个 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
}
}