首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何为同时具有UITapGestureRecognizer的UIViewController.view中的UIView挑选UITapGestureRecognizer并执行操作?

在一个具有多个UITapGestureRecognizer的UIViewController.view中的UIView上挑选并执行操作的方法如下:

  1. 首先,确保你的UIViewController类遵循UIGestureRecognizerDelegate协议,并将其设置为UIGestureRecognizer的delegate。这可以通过在UIViewController类中添加以下代码来实现:
代码语言:txt
复制
class YourViewController: UIViewController, UIGestureRecognizerDelegate {
    // ...
}
  1. 在你的UIViewController类中,创建并添加多个UITapGestureRecognizer到UIView上。每个UITapGestureRecognizer都可以具有不同的手势识别条件和操作。例如,你可以创建两个UITapGestureRecognizer,一个用于单击手势,另一个用于双击手势。以下是一个示例代码:
代码语言:txt
复制
class YourViewController: UIViewController, UIGestureRecognizerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let singleTapGesture = UITapGestureRecognizer(target: self, action: #selector(handleSingleTap(_:)))
        singleTapGesture.numberOfTapsRequired = 1
        singleTapGesture.delegate = self
        yourView.addGestureRecognizer(singleTapGesture)
        
        let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap(_:)))
        doubleTapGesture.numberOfTapsRequired = 2
        doubleTapGesture.delegate = self
        yourView.addGestureRecognizer(doubleTapGesture)
        
        // 防止单击手势被双击手势识别
        singleTapGesture.require(toFail: doubleTapGesture)
    }
    
    @objc func handleSingleTap(_ gesture: UITapGestureRecognizer) {
        // 处理单击手势的操作
    }
    
    @objc func handleDoubleTap(_ gesture: UITapGestureRecognizer) {
        // 处理双击手势的操作
    }
}

在上面的示例中,我们创建了一个单击手势和一个双击手势,并将它们添加到名为yourView的UIView上。每个手势都有一个目标和一个操作方法,分别是handleSingleTap和handleDoubleTap。你可以根据需要自定义这些操作方法。

  1. 在UIViewController类中,实现UIGestureRecognizerDelegate的方法来选择性地处理手势。例如,你可以使用gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)方法来决定是否同时识别多个手势。以下是一个示例代码:
代码语言:txt
复制
class YourViewController: UIViewController, UIGestureRecognizerDelegate {
    // ...
    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true // 允许同时识别多个手势
    }
}

在上面的示例中,我们实现了gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)方法,并返回了true,表示允许同时识别多个手势。你可以根据需要自定义这个方法。

通过以上步骤,你可以在一个具有多个UITapGestureRecognizer的UIViewController.view中的UIView上挑选并执行操作。根据手势的不同,你可以执行不同的操作,以满足你的需求。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

慎用公共变量~~

我们可以把关联对象想象成一个Objective-C对象(字典),这个对象通过给定key连接到类一个实例上。不过由于使用是C接口,所以key是一个void指针(const void *)。...4、举个栗子: 在开发工程,给UIView添加单击手势是非常常见需求。假定,现在我们就要动态地将一个Tap手势操作连接到任何UIView,并且根据需要指定点击后实际操作。...这时候我们就可以将一个手势对象及操作block对象关联到我们UIView对象。这项任务分为两部分。 首先,如果需要,我们要创建一个手势识别对象并将它及block做为关联对象。...如果没有,则创建建立关联关系。同时,将传入块对象连接到指定key上。注意block对象关联内存管理策略-Copy。...,因为我们只需要在点击手势被识别出来时才执行操作

75640

UIGestureRecognizer  手势识别一、概念介绍二、UIView 分类三、UIGestureRecognizer 抽象类四、UIGestureRecognizerDelegate 代理

(但可能已经触发了触摸事件),默认状态 UIGestureRecognizerStateBegan 手势已经开始,此时已经被识别,但是这个过程可能发生变化,手势操作尚未完成 UIGestureRecognizerStateChanged...如果设置为YES,手势识别器在识别的过程(注意是识别过程),不会将触摸发给触摸到控件,即控件不会有任何触摸事件。...- (void)removeTarget:(nullable id)target action:(nullable SEL)action; 4、指定一个手势需要另一个手势执行失败才会执行同时触发多个手势使用其中一个手势解决办法...有时手势是相关联单机和双击,点击和长按,点下去瞬间可能只会识别到单击无法识别其他,该方法可以指定某一个 手势,即便自己已经满足条件了,也不会立刻触发,会等到该指定手势确定失败之后才触发 -...代理方法 处理一些同时进行手势操作: 1、 开始进行手势识别时调用方法,返回NO则结束识别,不再触发手势,用处:可以在控件指定位置使用手势识别 - (BOOL)gestureRecognizerShouldBegin

2.7K80

慎用公共变量

出现问题,解决问题,Objective-C针对上述问题,提供了一个解决方案:即使用关联对象(Associated Object); 我们可以把关联对象想象成一个Objective-C对象(字典),这个对象通过给定...函数将key指定关联对象设置为nil; 举个栗子 在开发工程,给UIView添加单击手势是非常常见需求。...假定,现在我们就要动态地将一个Tap手势操作连接到任何UIView,并且根据需要指定点击后实际操作; 这时候我们就可以将一个手势对象及操作Block对象关联到我们UIView对象。...如果没有,则创建建立关联关系。同时,将传入块对象连接到指定key上。...,因为我们只需要在点击手势被识别出来时才执行操作

55520

手势抽象类——UIGestureRecognizer三. UIGestureRecogni

手势抽象类——UIGestureRecognizer UIGestureRecognizer将一些和手势操作相关方法抽象了出来,但它本身并不实现什么手势,因此,在开发,我们一般不会直接使用UIGestureRecognizer...触发方法,并且触发时候,所有添加selector都会被执行,我们以点击手势示例如下: - (void)viewDidLoad { [super viewDidLoad]; UITapGestureRecognizer...,也就是说默认当识别到手势时,touch事件传递方法将被终止而不执行,如果设置为NO,touch事件传递方法仍然会被执行,上例我们使用了拖拽手势和touchesMoved两个触发方式,当我们把cancelTouchesInView...点击手势——UITapGestureRecognizer 点击手势十分简单,支持单击和多次点击,在我们手指触摸屏幕抬起手指时会进行触发,其中有如下两个属性我们可以进行设置: //设置点击次数,默认为单击...@property (nonatomic) NSUInteger numberOfTapsRequired; //设置同时点击手指数 @property (nonatomic) NSUInteger

2.4K50

iOS实现点击图片放大&长按保存图片

在实际操作呢,会涉及到上传图片,在页面布局时,可能图片不是一张,考虑到布局美观等因素,显示图片位置变得很小,如果想查看上传图片是否清晰,内容是否完整,可能就需要放大才能实现,下面就和大家分享一下我封装一类...另外,这些博文都是来源于我日常开发技术总结,在时间允许情况下,我会针对技术点分别分享iOS、Android两个版本,尽量附上demo以供大家参考,如果有其他技术点需要,可在文章后留言,我会尽全力帮助大家... 添加放大后背景视图颜色和透明度 使用动画放大展示ImageView 添加恢复ImageView原始尺寸tap点击事件 完成之后将背景视图删掉 三:实现源码分析 根据实现思路分析,一步步进行编码实现...根据传入UIImageView重新绘制在Window +(void)ImageZoomWithImageView:(UIImageView *)contentImageview{ UIWindow...使用动画放大展示ImageView //动画放大所展示ImageView [UIView animateWithDuration:0.4 animations:^{ CGFloat

5.9K20

iOS点击查看大图动画效果

今天就讲解一个查看和收起大图动画效果,先直接看效果图: 如图所示,最开始是一个小图,点击小图可以查看大图。大图会从小图位置和大小“弹”出来,同时背景变成半透明阴影。...点击大图或者阴影后,收起大图,同样地弹回到小图去,同时去掉阴影背景,就像是一张图片在伸大缩小一样。 现在看看这是怎么实现。...同时,我也设置了两个视图点击相应方法,都是收起大图动画方法,我们之后再去实现。现在,我们可以来着手实现显示大图动画了。...这里动画我们使用是最简单iOS 7开始支持基于blockUIView动画,在我这篇博客也有详细讲解:iOS基础动画教程 然后,我们初始化了阴影背景视图,添加到界面上,此时不要忘记,要再次将大图手动推送到最上层...这个例子图片是中规中矩地放在居中位置,你也可以试一下将小图放在其他位置,其实真实app很少有居中放置,从别的地方伸缩放大缩小效果会更加有趣

1.6K20

iOS开发手势体系——UIGestureRecognizer分析及其子类使用

iOS开发手势体系——UIGestureRecognizer分析及其子类使用 一、引言         在iOS系统,手势是进行用户交互重要方式,通过UIGestureRecognizer类,...我们可以轻松创建出各种手势应用于app。...关于UIGestureRecognizer类,是对iOS事件传递机制面向应用封装,将手势消息传递抽象为了对象。...二、手势抽象类——UIGestureRecognizer         UIGestureRecognizer将一些和手势操作相关方法抽象了出来,但它本身并不实现什么手势,因此,在开发,我们一般不会直接使用...) NSUInteger  numberOfTapsRequired;  //设置同时点击手指数 @property (nonatomic) NSUInteger  numberOfTouchesRequired

1.7K20

iOS14开发-触摸与手势识别

触摸 概念 UITouch 用于描述触摸窗口、位置、运动和力度。一个手指触摸屏幕,就会生成一个 UITouch 对象,如果多个手指同时触摸,就会生成多个 UITouch 对象。...属性 (1)window:触摸时所处 UIWindow。 (2)view:触摸时所处 UIView。 (3)tapCount:短时间内点按屏幕次数。可据此判断单击和双击操作。...遍历每一个子 UIView 时,都会重复上面的操作(判断能否响应触摸事件,能则继续遍历子 UIView,直到找到一个 UIView)直到找到最合适 UIView。...响应者对于触摸事件响应和传递都是在touchesBegan方法完成。该方法默认是将事件顺着响应者链向上传递,即将事件交给上一个响应者进行处理。...继承自 UIControl UIView 都可以通过 Target-Action 方式添加事件,如果同时给它们添加手势识别, 则 Target-Action 行为会失效,因为手势识别的优先级更高。

2.2K20

iOS手势应用1. 四类事件主要方法2. 响应者链3. 手势识别功能(Gesture Recognizer)4. 手势使用

iOS设备现如今大受欢迎最重要原因之一就在于其开创了触控操作潮流。发展到现在,无论是Android还是iPhone,现在APP与用户进行交互,基本上都是依赖于各种各样触控事件。...例如用户对屏幕进行了侧滑,APP就需要对这个手势进行相应处理,给用户一个反馈。这些相应事件就都是在UIResponder定义。...触摸事件.png 但是在iOS不是任何对象都能处理事件,只有继承了UIResponder对象才能接收并处理事件。我们称之为“响应者对象”。...响应者链 概念吶,我们就不说了,网上文章应该一搜一大堆。这里是比较理论化知识,是比较考验我们对于iOS触摸事件理解深度。这里我就只是用简单方式,写一下自己对于这部分理解。...4.编写手势触发监听方法 每一个手势识别器用法都差不多,比如UITapGestureRecognizer使用步骤如下: //创建手势识别器对象 UITapGestureRecognizer *tap

2.1K40

iOS学习——UIPickerView实现年月选择器

最近项目上需要用到一个选择器,选择器内容只有年和月,而在iOS系统自带日期选择器UIDatePicker却只有四个选项如下,分别是时间(时分秒)、日期(年月日)、日期+时间(年月日时分)以及倒计时...因此,为了满足项目需求,自己用UIPickerView写了一个只显示年月选择器界面,同时还可以控制我们显示最小时间。当然,如果要控制其他内容也都是可以,无非就是在数据处理上多一些处理和控制。...主要是对整体框架进行布局,我们控件位置都是通过绝对位置进行布局,所以需要修改在话可以直接在对应位置上进行修改,然后在BaseView.h注释我们说过了,点击背景遮罩图层和取消、确定按钮点击事件实现效果在基类中都是空白...,该方法主要是让使用者提供选择器标题、最小日期、日期选择完成后操作等基本信息,方便我们对选择器数据和操作进行设置。...其中取消按钮就直接没有操作,dismiss当前界面,注意要进行dealloc,创建视图要清除,避免内存泄露。蒙层背景点击事件看需求,有的需要和取消一样效果,有的可能就无效果,自己添加即可。

4.1K130

iOS开发·runtime原理与实践: 关联对象篇(Associated Object)(应用场景:为分类添加“属性”,为UI控件关联事件Block体,为了不重复获得某种数据)

本系列尝试阐述runtime相关理论同时介绍一些实战场景,而本文则是本系列关联对象篇。...2.3 实战场景 需求:比如你为UIView添加事件,可以在上面添加一个UITapGestureRecognizer,但是这个点击事件无法携带NSString信息(虽然可以携带int类型tag),这就无法让后续响应该事件方法区分到底是哪里激活事件...alertView参数,据此选用相应逻辑。...关联对象:为了不重复执行 有时候OC中会有些方法是为了获取某个数据,但这个获取过程只需要执行一次即可,这个获取算法可能有一定时间复杂度和空间复杂度。那么每次调用时候就必须得执行一次吗?...有没有办法让方法只执行一次,每次调用方法时候直接获得那一次执行结果?有的,方案就是让某个对象方法获得数据结果作为“属性”与这个对象进行关联。

2.5K20
领券