Swift-各种手势检测大全(UIGestureRecognizer及其子类)

Swift-各种手势检测大全(UIGestureRecognizer及其子类)

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信