Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何防止同时使用向导识别器_Iphone_Ios_Uigesturerecognizer - Fatal编程技术网

Iphone 如何防止同时使用向导识别器

Iphone 如何防止同时使用向导识别器,iphone,ios,uigesturerecognizer,Iphone,Ios,Uigesturerecognizer,我在几个类似卡片的视图上使用uipangestrerecognizer,让用户在屏幕上移动视图。这是非常好的,他们可以放下3个手指,拿起3张卡一次,然而,我的一些功能不是设计为这样工作 我只允许一次运行一个手势识别器。有没有更好的方法 我考虑过: 手势识别器:应与手势识别器同时识别:,但默认情况下它已返回“否” 在第一个手势开始时设置一个实例变量,但我关心的是对这个变量的多线程访问(我应该使用@synchronized,还是开销太大?) 保存一组手势识别器,并在手势识别器中检查它们的状态应该开

我在几个类似卡片的视图上使用
uipangestrerecognizer
,让用户在屏幕上移动视图。这是非常好的,他们可以放下3个手指,拿起3张卡一次,然而,我的一些功能不是设计为这样工作

我只允许一次运行一个手势识别器。有没有更好的方法

我考虑过:

  • 手势识别器:应与手势识别器同时识别:
    ,但默认情况下它已返回“否”
  • 在第一个手势开始时设置一个实例变量,但我关心的是对这个变量的多线程访问(我应该使用
    @synchronized
    ,还是开销太大?)
  • 保存一组手势识别器,并在手势识别器中检查它们的状态应该开始:以确保没有任何动作正在进行

谢谢。

在所有卡片的公共superview上放置一个UIPangestureRecognitor,然后在手势开始时进行点击检测以找到有问题的卡片。这样,您只有一个手势识别器,因此一次只能运行一个手势


编辑:顺便说一句,你保留ivar的想法虽然笨拙,但会奏效。UIGestureRecognitor是UIKit的一部分,只在主线程上操作,因此您不必担心多线程访问。但就像我说的,这很笨拙。使用单个“主”手势识别器更干净。

最佳做法是在视图中使用一个(全局)手势识别器,该识别器是superview,用于您的卡,并带有
hitTest:
,用于确定哪张卡已被触摸。它将允许您正确使用多个触控。

添加一个全局手势识别器,并检查点击的图像。感谢您对我的想法做出回应,我同意这会很笨拙,因此我将使用superview解决方案。