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

为什么我不能在action函数中切换UIGestureRecognizer的属性

在iOS开发中,UIGestureRecognizer是用于处理用户手势操作的类。它可以识别并响应用户的点击、滑动、捏合、旋转等手势动作。

然而,在action函数中切换UIGestureRecognizer的属性是不被推荐的。原因如下:

  1. 动态改变手势识别器的属性可能导致意外的行为:UIGestureRecognizer的属性包括手势的触发条件、响应的目标对象等。如果在action函数中动态改变这些属性,可能会导致手势的触发条件不一致或响应的目标对象发生变化,从而导致意外的行为。
  2. 可能引发冲突或混乱:在一个action函数中切换UIGestureRecognizer的属性可能会导致手势之间的冲突或混乱。例如,如果在一个点击手势的action函数中切换为滑动手势的属性,可能会导致同时触发点击和滑动手势,从而引发冲突或混乱。

为了避免上述问题,建议在设置UIGestureRecognizer时,尽量在初始化时确定好手势的属性,并在需要改变属性时重新创建手势识别器对象。这样可以确保手势的属性一致,并且避免冲突或混乱。

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

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

相关·内容

iOS - 实现UINavigation全屏滑动返回(二)

回顾 在 iOS - 实现UINavigation全屏滑�动返回(一) 我们实现了滑动返回功能,但不是全屏滑动返回,得在左侧边缘轻扫才能滑动返回~UINavigationController自带能在边缘轻扫才能滑动返回...:方法(刚才打印信息可以得知),现在问题就是target是谁?...,在UIGestureRecognizer提供方法我们可以推断出一定有target,而且还是强引用私有属性!...那我们就可以用OC强大杀手锏KVC来得到这个属性,但是前提是我们得知道target所指属性是什么名字 参照另一篇文章:iOS - 通过runtime获取某个类中所有的变量和方法 // OC runtime...ivar_getTypeEncoding(ivar)); } // 释放 free(ivars); 在打印我们找到了UIGestureRecognizer私有属性 _targets,是个数组

1.2K40

手势抽象类——UIGestureRecognizer三. UIGestureRecogni

UIGestureRecognizer是一个抽象类,对iOS事件传递机制面向应用进行封装,将手势消息传递抽象为了对象。其中定义了所有手势基本行为,使用它子类才能处理具体手势。 二....手势抽象类——UIGestureRecognizer UIGestureRecognizer将一些和手势操作相关方法抽象了出来,但它本身并不实现什么手势,因此,在开发,我们一般不会直接使用UIGestureRecognizer...对象,而是通过其子类进行实例化,iOS系统给我们提供了许多用于实例子类,这些我们后面再说,我们先来看一下,UIGestureRecognizer抽象出了哪些方法。...pan.cancelsTouchesInView = YES 我们发现touchesMoved方法仍然被调用了,这是为什么呢?...UIGestureRecognizer子类及子类属性 除了UIGestureRecognizer方法和属性是所有子类通用之外,UIGestureRecognizer子类中分别有不同属性和方法来对应不同手势

2.4K50

【IOS开发进阶系列】手势专题

1 touchesBegan手势         iPhone处理触摸屏操作,在3.2之前是主要使用是由UIResponder而来的如下4种方式:     - (void)touchesBegan...2 UIGestureRecognizer         iOS系统在3.2以后,为方便开发这使用一些常用手势,提供了UIGestureRecognizer类。...添加到需要识别的View。每个手势只对应一个View,当屏幕触摸在View边界内时,如果手势和预定一样,那就会回调方法。         ...在模拟器上缩放和选择操作技巧:         可以把imageViewframe值设置大一点,按住alt键,按下触摸板(按下不行),这样就可以旋转和缩放了。...属性: numberOfTapsRequired:默认值为0,轻击次数。 numberOfTouchesRequired:默认值是1,手指数量。

34040

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

iOS开发手势体系——UIGestureRecognizer分析及其子类使用 一、引言         在iOS系统,手势是进行用户交互重要方式,通过UIGestureRecognizer类,...关于UIGestureRecognizer类,是对iOS事件传递机制面向应用封装,将手势消息传递抽象为了对象。...二、手势抽象类——UIGestureRecognizer         UIGestureRecognizer将一些和手势操作相关方法抽象了出来,但它本身并不实现什么手势,因此,在开发,我们一般不会直接使用...UIGestureRecognizer对象,而是通过其子类进行实例化,iOS系统给我们提供了许多用于我们实例子类,这些我们后面再说,我们先来看一下,UIGestureRecognizer抽象出了哪些方法...:(UIGestureRecognizer *)otherGestureRecognizer; 这个方法第一个参数是需要时效手势,第二个是生效手势。

1.7K20

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

*)gestureRecognizer; 3、是否接收一个手势触摸事件,默认为YES,返回NO为接收 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer...*)gestureRecognizer; ---- 三、UIGestureRecognizer 抽象类 属性: 1、获取当前手势状态 @property(nonatomic,readonly) UIGestureRecognizerState...如果设置为YES,手势识别器在识别的过程(注意是识别过程),不会将触摸发给触摸到控件,即控件不会有任何触摸事件。...:(nullableSEL)action; 2、给一个手势对象添加监听事件 - (void)addTarget:(id)target action:(SEL)action; 3、移除一个手势监听事件...longPress.allowableMovement = 10; // 把长按手势添加到对应控件 [self.imgView addGestureRecognizer:longPress];

2.7K80

iOS好用第三方侧边栏控件——MMDrawerController

centerViewController rightDrawerViewController:(UIViewController *)rightDrawerViewController; MMDrawerController也提供了许多属性和方法供开发者进行自定义设置...,drawerSide参数为要切换侧边栏,animated设置是否有动画效果,completion会在切换完成后执行 //注意:如果在切换一个关着侧边栏时,如果另一个侧边栏正在开启状态,则此方法不会有任何效果...,并且在侧边栏出现过程,这个回调block会被不停刷新调用,开发者可以直接在其中对要过渡属性进行设置,例如透明度渐变动画,示例如下: //进行自定义动画 [rootController setDrawerVisualStateBlock...其中方法如下: //初始化方法 -(id)initWithTarget:(id)target action:(SEL)action; //获取某个状态下按钮颜色 -(UIColor *)menuButtonColorForState...3.无法设置显示一个最小抽屉宽度。 4.不能支持UITabBarController容器。 5.不能在中心视图控制器之上呈现侧边栏视图。 专注技术,热爱生活,交流技术,也做朋友。 ——珲少

2.7K20

ios 百度地图 获取拖动或缩放手势

在项目中遇到一个问题,在拖动或者缩放百度地图时候要请求数据。但是百度地图SDK没有明确如何获取拖动和缩放手势 官方推荐使用如下两个方法,通过判断状态来获取,但是也没有明确怎么判断。...还有个问题就是如果在regionDidChangeAnimated请求数据的话,产品还有个需百度地图中心点以最新一条数据经纬度移动。...注意:加自定义手势时,必须设置UIGestureRecognizer属性cancelsTouchesInView 和 delaysTouchesEnded 为NO,否则影响地图内部手势处理。...拖动 UIPanGestureRecognizer *mapPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action...UIPinchGestureRecognizer *mapPinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action

1.5K30

iOS14开发-触摸与手势识别

属性 (1)window:触摸时所处 UIWindow。 (2)view:触摸时所处 UIView。 (3)tapCount:短时间内点按屏幕次数。可据此判断单击和双击操作。...-> CGPoint UIEvent 一个完整触摸操作是一个 UIEvent,它包含一组相关 UITouch 对象,可以通过 UIEvent allTouches属性获得 UITouch 集合。...事件响应 当找到最合适响应者之后,响应者对于触摸事件,有以下 3 种操作: (1)拦截,事件会沿着默认响应链自动传递。...响应者对于触摸事件响应和传递都是在touchesBegan方法完成。该方法默认是将事件顺着响应者链向上传递,即将事件交给上一个响应者进行处理。...每一个响应者对象都有一个next属性,用来获取下一个响应者。

2.2K20

iOS右滑返回实现(interactivePopGestureRecognizer)

,返回NO不允许右滑手势激活 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { if...,返回NO不允许右滑手势激活 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { if...UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:QCTNAVicon_left] style:0 target:viewController action...,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你手势返回,例如是否隐藏了 navigationBar,或者隐藏了系统返回按钮?...在这里插入图片描述 see also iOS运行时API应用:1、实现路由(接口控制app跳任意界面 )2、获取修改对象成员属性3、动态添加/交换方法实现4、属性关联 https://kunnan.blog.csdn.net

2.9K20

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

例如用户对屏幕进行了侧滑,APP就需要对这个手势进行相应处理,给用户一个反馈。这些相应事件就都是在UIResponder定义。...触摸事件.png 但是在iOS不是任何对象都能处理事件,只有继承了UIResponder对象才能接收并处理事件。我们称之为“响应者对象”。...响应者链 概念吶,我们就不说了,网上文章应该一搜一大堆。这里是比较理论化知识,是比较考验我们对于iOS触摸事件理解深度。这里就只是用简单方式,写一下自己对于这部分理解。...方法监听view触摸事件,有很明显几个缺点 必须得自定义view 由于是在view内部touches方法监听触摸事件,因此默认情况下,无法让其他外界对象监听view触摸事件 不容易区分用户具体手势行为...,必须借助于手势识别器——UIGestureRecognizer 利用UIGestureRecognizer,能轻松识别用户在某个view上面做一些常见手势 UIGestureRecognizer是一个抽象类

2.1K40

iOS_38_手势

大家好,又见面了,是全栈君。...,才干够接收和处理事件 父类响应者定义事件处理接口例如以下: 触摸事件处理四个方法例如以下:(仅仅要实现,系统会自己主动调用) 一个UITouch对象,代表着一根手指,手指移动,...,经常使用属性是:事件类型 触摸四个方法(即过程)具体解释:注意同一时候和一前一后触摸情况 必须先找到事件最合适响应者(从父到子地找) 以下是寻找最合适事件响应者详细样例:...:(UIGestureRecognizer *) 手势识别器标准做法:三步曲(创建、设置、绑定) 重点关注三种手势识别的状态:開始\结束\取消 官方文档关于手势识别的状态变化图...,就会调用监听方法) UIGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:

90520

Redux源码浅析

除此之外,就是为了对action有严格限制,必须是一个简单对象plainObject、必须要有type属性,这些都能保证reducer函数处理时候拿到action是预期,可以放心去执行纯函数。...看到这里有疑问:为什么需要这个变量?js是单线程语言,这些函数都是同步,既然是同步场景,我们在调用dispatch时,js会执行完这个函数再处理其他函数,应该不会有交集。...这里返回是currentState本体,没有做拷贝,所以其实如果state是引用类型的话,是可以直接通过getState来直接修改state内部属性,但是肯定推荐这样做,走dispatch...)来保存监听函数,并且在订阅和取消订阅时候使用了ensureCanMutateListeners方法来执行浅拷贝:图片这里产生了很大疑问,为什么要用如此直观方法来保存监听者。...对于一个简单中间件如打印简单日志,它基本长这样:图片原本对Redux中间件并不熟悉,所以先去看了一下官方概念,对了解中间件为什么要这么写有很大帮助。

1.6K71

函数响应式编程及ReactiveObjC学习笔记 (二)

属性 #import @interface Student : NSObject @property (nonatomic, strong) NSString...这里其实RAC还为我们提供了除了subscriber以外操作, 后面再介绍给, 现在我们主要先来看RAC是怎么替我们做KVO 我们再看看RAC如何帮我们实现target-action 我们创建一个项目..., 在controller添加一个button, 然后给button添加一个点击事件 如果是常规写法的话, 在创建完button后创建一个点击响应方法, 然后通过addTarget把响应方法跟button..., 代码超过三行建议大家单独写一个方法供调用, 以免破坏代码结构 RAC这样使用方式, 让代码逻辑更加清晰紧凑了, 我们再看一个添加手势例子 UITapGestureRecognizer...用UIAlertView给大家举个例子, 虽然苹果已经推荐用这个 不过我们拿来当例子用用看 先写一个常规AlertView #import "ViewController.h" #import <

44811
领券