Swift - UIGestureRecognizer
2019-01-08 本文已影响2人
iOS分享
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("长按结束")
}
}
}