手势基础类: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("左右清扫")
}
网友评论