UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有:
UISwipeGestureRecognizer //滑动(快速移动)
UITapGestureRecognizer //点击(轻点)
UIPinchGestureRecognizer //捏合(两个手指,放大缩小的手势)
UIRotationGestureRecognizer // 旋转(两个手指旋转)
UIPanGestureRecognizer // 拖动(移动速度较慢)
UILongPressGestureRecognizer //长按(按住不放)
1、滑动手势
override func viewDidLoad() {
super.viewDidLoad()
let swipe = UISwipeGestureRecognizer.init(target: self, action: #selector(swipeclick))
//滑动方向
swipe.direction = UISwipeGestureRecognizerDirection.up
self.view.addGestureRecognizer(swipe)
}
func swipeclick() {
}
2、轻点手势
let tapsingle = UITapGestureRecognizer.init(target: self, action: #selector(tapClick))
//几根手指
tapsingle.numberOfTapsRequired = 1;
//点击次数
tapsingle.numberOfTouchesRequired = 1;
self.view.addGestureRecognizer(tapsingle)
let tapDouble = UITapGestureRecognizer.init(target: self, action: #selector(tapClick))
tapDouble.numberOfTapsRequired = 2;
tapDouble.numberOfTouchesRequired = 2;
self.view.addGestureRecognizer(tapsingle)
// 双击时间失败后才会执行单击事件
tapsingle.require(toFail: tapDouble)
}
func tapClick() {
}
3、捏合手势
{
let pinch = UIPinchGestureRecognizer.init(target: self, action: #selector(pinClick(_:)))
self.view.addGestureRecognizer(pinch)
}
func pinClick(_ recognizer:UIPinchGestureRecognizer) {
}
4、旋转手势
override func viewDidLoad() {
super.viewDidLoad()
let rotation = UIRotationGestureRecognizer.init(target: self, action: #selector(pinClick(_:)))
self.view.addGestureRecognizer(rotation)
}
func pinClick(_ recognizer:UIRotationGestureRecognizer) {
//旋转的弧度转化成角度
print(recognizer.rotation * (180/CGFloat(M_PI)))
}
5、拖动手势
class ViewController: UIViewController{
var rect:UIView!
override func viewDidLoad() {
super.viewDidLoad()
rect = UIView.init(frame: CGRect.init(x: 0, y: 0, width: 100, height: 100))
rect.center = self.view.center
rect.backgroundColor = UIColor.red
self.view.addSubview(rect)
let pan = UIPanGestureRecognizer.init(target: self, action: #selector(pinClick(_:)))
pan.maximumNumberOfTouches = 1
rect.addGestureRecognizer(pan)
}
func pinClick(_ recognizer:UISwipeGestureRecognizer) {
let point = recognizer.location(in: self.view)
rect.center = point
}