UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有:

1,UISwipeGestureRecognizer:滑动(快速移动)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class ViewController : UIViewController {
override func viewDidLoad() {
super .viewDidLoad()
let swipe = UISwipeGestureRecognizer (target: self ,action: Selector ( "swipe:" ))
swipe.direction = UISwipeGestureRecognizerDirection . Up
.view.addGestureRecognizer(swipe)
}
swipe(recognizer: ){
print "swipe ok" )
var point=recognizer.locationInView( .view)
//这个点是滑动的起点
(point.x)
(point.y)
}
}
注意1:如果UISwipeGestureRecognizer在不指定方向的时候,默认向右滑动才会触发事件。如果要指定方向,需要设置direction属性
2
//表示监听滑动的方向为向上
Up

注意2:有网友问如果各个方向都要响应怎么办,只要多定义几个UISwipeGestureRecognizer就可以了
18
19
20
21
22
23
24
25
26
27
swipeUp = swipeUp.direction = .view.addGestureRecognizer(swipeUp)
swipeDown = ))
swipeDown.direction = Down
.view.addGestureRecognizer(swipeDown)
}
){
if recognizer.direction == Up {
"向上滑动" )
} else Down {
"向下滑动" )
}
.view)
//这个点是滑动的起点
(point.x)
(point.y)
}
}

2,UITapGestureRecognizer:轻点手势(点击)
(1)可以通过numberOftouchesrequired属性设置触摸点数,比如设置2表示必须两个手指触摸时才会触发
(2)通过numberOfTapsrequired属性设置点击次数,单击设置为1,双击设置为2
(3)如果一个控件既监听了单击事件也监听了双击事件,默认当双击事件触发的时候也同时会触发单击事件。如果想双击时不触发单击,需要通过requireGestureRecognizerToFail进行设置
27
28
29
//单击监听
tapSingle= UITapGestureRecognizer ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.5em!important; margin:0px!important; overflow:visible!important; padding:1px 0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,action: "tapSingleDid" )
tapSingle.numberOfTapsrequired=1
tapSingle.numberOftouchesrequired=1
//双击监听
tapDouble= "tapDoubleDid:" )
tapDouble.numberOfTapsrequired=2
tapDouble.numberOftouchesrequired=1
//声明点击事件需要双击事件检测失败后才会执行
tapSingle.requireGestureRecognizerToFail(tapDouble);
.view.addGestureRecognizer(tapSingle)
.view.addGestureRecognizer(tapDouble)
}
tapSingleDid(){
"单击了" )
}
tapDoubleDid(sender: ){
sender.view == .view{
"双击了" )
}
}
}

3,UIPinchGestureRecognizer:捏合手势(两个手指进行放大缩小)
17
//设置监听方法为pinchDid方法
pinch= UIPinchGestureRecognizer "pinchDid:" .view.addGestureRecognizer(pinch)
}
pinchDid(recognizer: {
//在监听方法中可以实时获得捏合的比例
(recognizer.scale);
}
}

4,UIRotationGestureRecognizer:旋转手势(两个手指进行旋转)
14
rotation= UIRotationGestureRecognizer "rotationDid:" )
.view.addGestureRecognizer(rotation)
}
rotationDid(recognizer: ){
//旋转的弧度转换为角度
(recognizer.rotation*(180/ CGFloat ( M_PI )))
}

5,UIPanGestureRecognizer:拖动手势
23
rect: UIView !
viewDidLoad() {
.viewDidLoad()
rect= (frame: CGRectMake (0,100,100))
rect.center= .view.center
rect.backgroundColor= UIColor .redColor()
.view.addSubview(rect)
pan = UIPanGestureRecognizer "panDid:" )
pan.maximumNumberOftouches=1
rect.addGestureRecognizer(pan)
panDid(recognizer: ){
.view)
//设置矩形的位置
rect.center=point
}

6,UILongPressGestureRecognizer:长按

Swift - 各种手势检测大全UIGestureRecognizer及其子类的更多相关文章

  1. 用canvas做一个DVD待机动画的实现代码

    这篇文章主要介绍了用canvas做一个DVD待机动画的实现代码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. H5 canvas实现贪吃蛇小游戏

    本篇文章主要介绍了H5 canvas实现贪吃蛇小游戏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. Pan和2 Finger Pinch同步iOS – 同时 –

    2手势识别器:和:但同时捏和平底锅不起作用……

  4. ios – 视图的简单拖放?

    我正在学习iOS,但我找不到如何向UIView添加拖放行为.我试过了:它说“UIView没有可见的接口声明选择器addTarget”此外,我尝试添加平移手势识别器,但不确定这是否是我需要的它被称为,但不知道如何获得事件的坐标.在iOS中注册移动事件回调/拖放操作的标准简单方法是什么?

  5. ios – Swift 4添加手势:覆盖vs @objc

    我想在我的视图中添加一个手势,如下所示:但是,在Swift4中,我的编译器给出了以下错误:建议添加@objc以将此实例方法公开给Objective-C.实现此目的的另一个选项将覆盖touchesBegan()函数并使用它来处理点击.我试图以“Swift”的方式做到这一点,而不必带入Obj-C.有没有纯粹的Swift方式来添加这个轻击手势而不使用@objc?

  6. ios – UINavigationController自定义动画可防止滑动返回工作

    我注意到一些奇怪的东西,可能是UINavigationController中的一个错误.当你覆盖-navigationController:animationControllerForOperation:fromViewController:toViewController:并返回nil(对于默认的动画行为),拖放回去的手势不再有效.此方法的文档说明如果要使用标准导航控制器转换,则应返回“nil”

  7. ios – UITableView滑动手势与UITableViewCell滑动冲突

    以下是我编写的用于在UITableView上放置2个手指滑动的代码:我正在使用SWTableViewCell左右(单击)gestureRecognisers.当使用2个手指向左/向右滑动UITableView时,SWTableViewCell左右手势也会在此之后被触发.如何制止冲突?解决方法当您触摸SWTableViewCell时,将BOOLSWTableViewCellTouch设置为YES.

  8. ios – iPad – 如何检测启用多任务手势?

    参见英文答案>Howtodisable4fingergesturesoniPad?3个我创建了一个iPad应用程序,如果没有启用多任务手势,它会很有帮助.我知道你不能从应用程序本身禁用它们(感谢上帝应用程序不能自己决定).但我想要做的是在启动多任务手势的情况下在启动时显示警告,并建议用户关闭它们以获得最佳使用效果.我见过应用程序做同样的事情,比如Apple的GarageBand.在该应用程序中,多

  9. ios – 点击手势不适合我

    我开始使用这个Appletutorial了.所以我通过拖放图像视图创建了一个TapGesture,然后我控制–拖动到我的UIViewControler并成功创建了Event.但我的问题是它没有解雇这个事件.我还有其他事要做吗?

  10. ios – 仅在视图的一部分上接收轻击手势

    我在视图控制器中有一个UIImageView.是否可以使图像视图的某些区域可以进行处理?解决方法您可以使用handleGesture方法.首先,您需要创建一个接收触摸的位置,您必须将其与委托方法中的触摸位置进行比较,如下所示:在viewdidload中下一个委托方法

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部