2023年7月13日发(作者:)
Swift-各种⼿势检测⼤全(UIGestureRecognizer及其⼦类)UIGestureRecognizer有许多⼦类,⽤于监听⼀些常见的⼿势事件,这些⼦类主要有:1,UISwipeGestureRecognizer:滑动(快速移动)17181920import UIKit
class ViewController : UIViewController {
override func viewDidLoad() { super .viewDidLoad()
let swipe = UISwipeGestureRecognizer (target: self , action:#selector(swipe(_:))) ion = UISwipeGestureRecognizerDirection . Up self .tureRecognizer(swipe) }
func swipe(recognizer: UISwipeGestureRecognizer ){ print ( "swipe ok" ) let point=onInView( self .view) //这个点是滑动的起点 print (point.x) print (point.y) }}注意1:如果UISwipeGestureRecognizer在不指定⽅向的时候,默认向右滑动才会触发事件。如果要指定⽅向,需要设置direction属性12//表⽰监听滑动的⽅向为向上ion = UISwipeGestureRecognizerDirection . Up注意2:有⽹友问如果各个⽅向都要响应怎么办,只要多定义⼏个UISwipeGestureRecognizer就可以了829import UIKit
class ViewController : UIViewController {
override func viewDidLoad() { super .viewDidLoad()
let swipeUp = UISwipeGestureRecognizer (target: self , action:#selector(swipe(_:))) ion = UISwipeGestureRecognizerDirection . Up self .tureRecognizer(swipeUp)
let swipeDown = UISwipeGestureRecognizer (target: self , action:#selector(swipe(_:))) ion = UISwipeGestureRecognizerDirection . Down self .tureRecognizer(swipeDown) }
func swipe(recognizer: UISwipeGestureRecognizer ){ if ion == UISwipeGestureRecognizerDirection . Up { print ( "向上滑动" ) } else if ion == UISwipeGestureRecognizerDirection . Down { print ( "向下滑动" ) }
let point=onInView( self .view) //这个点是滑动的起点 print (point.x) print (point.y) }}2,UITapGestureRecognizer:轻点⼿势(点击)
(1)可以通过numberOfTouchesRequired属性设置触摸点数,⽐如设置2表⽰必须两个⼿指触摸时才会触发
(2)通过numberOfTapsRequired属性设置点击次数,单击设置为1,双击设置为2
(3)如果⼀个控件既监听了单击事件也监听了双击事件,默认当双击事件触发的时候也同时会触发单击事件。如果想双击时不触发单击,需要通过requireGestureRecognizerToFail进⾏设置 8293031import UIKit
class ViewController : UIViewController {
override func viewDidLoad() { super .viewDidLoad()
//单击监听 let tapSingle= UITapGestureRecognizer (target: self ,action:#selector(tapSingleDid)) OfTapsRequired=1 OfTouchesRequired=1 //双击监听 let tapDouble= UITapGestureRecognizer (target: self ,action:#selector(tapDoubleDid(_:))) OfTapsRequired=2 OfTouchesRequired=1 //声明点击事件需要双击事件检测失败后才会执⾏ eGestureRecognizerToFail(tapDouble); self .tureRecognizer(tapSingle) self .tureRecognizer(tapDouble) }
func tapSingleDid(){ print ( "单击了" ) }
func tapDoubleDid(sender: UITapGestureRecognizer ){ if == self .view{ print ( "双击了" ) } }}3,UIPinchGestureRecognizer:捏合⼿势(两个⼿指进⾏放⼤缩⼩)171819import UIKit
class ViewController : UIViewController {
override func viewDidLoad() { super .viewDidLoad()
//设置监听⽅法为pinchDid⽅法 let pinch= UIPinchGestureRecognizer (target: self ,action:#selector(pinchDid(_:))) self .tureRecognizer(pinch)
} func pinchDid(recognizer: UIPinchGestureRecognizer ) { //在监听⽅法中可以实时获得捏合的⽐例 print (); }}4,UIRotationGestureRecognizer:旋转⼿势(两个⼿指进⾏旋转)17import UIKit
class ViewController : UIViewController {
override func viewDidLoad() { super .viewDidLoad()
let rotation= UIRotationGestureRecognizer (target: self , action:#selector(rotationDid(_:))) self .tureRecognizer(rotation) }
func rotationDid(recognizer: UIRotationGestureRecognizer ){ //旋转的弧度转换为⾓度 print (on*(180/ CGFloat ( M_PI ))) }}5,UIPanGestureRecognizer:拖动⼿势1718192import UIKit
class ViewController : UIViewController {
var rect: UIView !
override func viewDidLoad() { super .viewDidLoad()
rect= UIView (frame: CGRectMake (0, 0, 100, 100)) = self . oundColor= UIColor .redColor() self .view(rect)
let pan = UIPanGestureRecognizer (target: self ,action:#selector(panDid(_:))) mNumberOfTouches=1 tureRecognizer(pan) }
func panDid(recognizer: UISwipeGestureRecognizer ){ let point=onInView( self .view) //设置矩形的位置 =point }}6,UILongPressGestureRecognizer:长按1718192021import UIKit
class ViewController : UIViewController {
override func viewDidLoad() { super .viewDidLoad()
//长按监听 let longPress= UILongPressGestureRecognizer (target: self , action:#selector(longPressDid(_:))) self .tureRecognizer(longPress) }
func longPressDid(sender: UILongPressGestureRecognizer ){ if == . Began { print ( "长按响应开始" ) } else { print ( "长按响应结束" ) } }}
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689262817a226339.html
评论列表(0条)