Iphone 如何防止同时使用向导识别器
我在几个类似卡片的视图上使用Iphone 如何防止同时使用向导识别器,iphone,ios,uigesturerecognizer,Iphone,Ios,Uigesturerecognizer,我在几个类似卡片的视图上使用uipangestrerecognizer,让用户在屏幕上移动视图。这是非常好的,他们可以放下3个手指,拿起3张卡一次,然而,我的一些功能不是设计为这样工作 我只允许一次运行一个手势识别器。有没有更好的方法 我考虑过: 手势识别器:应与手势识别器同时识别:,但默认情况下它已返回“否” 在第一个手势开始时设置一个实例变量,但我关心的是对这个变量的多线程访问(我应该使用@synchronized,还是开销太大?) 保存一组手势识别器,并在手势识别器中检查它们的状态应该开
uipangestrerecognizer
,让用户在屏幕上移动视图。这是非常好的,他们可以放下3个手指,拿起3张卡一次,然而,我的一些功能不是设计为这样工作
我只允许一次运行一个手势识别器。有没有更好的方法
我考虑过:
,但默认情况下它已返回“否”手势识别器:应与手势识别器同时识别:
- 在第一个手势开始时设置一个实例变量,但我关心的是对这个变量的多线程访问(我应该使用
,还是开销太大?)@synchronized
- 保存一组手势识别器,并在手势识别器中检查它们的状态应该开始:以确保没有任何动作正在进行
谢谢。在所有卡片的公共superview上放置一个UIPangestureRecognitor,然后在手势开始时进行点击检测以找到有问题的卡片。这样,您只有一个手势识别器,因此一次只能运行一个手势
编辑:顺便说一句,你保留ivar的想法虽然笨拙,但会奏效。UIGestureRecognitor是UIKit的一部分,只在主线程上操作,因此您不必担心多线程访问。但就像我说的,这很笨拙。使用单个“主”手势识别器更干净。最佳做法是在视图中使用一个(全局)手势识别器,该识别器是superview,用于您的卡,并带有
hitTest:
,用于确定哪张卡已被触摸。它将允许您正确使用多个触控。添加一个全局手势识别器,并检查点击的图像。感谢您对我的想法做出回应,我同意这会很笨拙,因此我将使用superview解决方案。