我在(透明)UIView下面有一个UIButton。上面的UIView添加了一个UISwipeGestureRecognizer,这是它唯一的目的 - 检测某些滑动手势。我希望UIView忽略所有其他触摸,并传递给其他视图(例如我下面的UIButton)。目前,上面的UIView似乎正在检测水龙头(例如),什么都不做(应该是这样),而不是让UIButton下面有机会响应。
如果可能的话,我宁愿不实施自己的滑动识别器。任何解决方案/建议?我基本上只是想知道如何告诉UIView只关注某种类型的添加手势识别器,并忽略(并因此忽略所有其他触摸)。
答案 0 :(得分:14)
你有没有设置:
mySwipeGesture.cancelsTouchesInView = NO;
允许将触摸发送到视图层次结构以及手势吗?
此外,请确保顶部的视图为:
theTransparentView.opaque = NO;
theTransparentView.userInteractionEnabled = YES;
我已经很好地将手势附加到父视图,而无需在手势的顶部创建透明子视图。你确定你需要那样做吗?
答案 1 :(得分:3)
我昨天一定是在放一个恐惧 - 我今天醒来后想出了一个简单的解决方案。将UISwipeGesture添加到视图,该视图是UIView和UIButton的超视图。然后,在处理这些滑动时,找出滑动起源的位置,以及该点是否在我曾经拥有UIView的框架中。 (正如我所提到的,UIView存在的唯一原因是为这些滑动手势定义目标区域。)
答案 2 :(得分:0)
你不能把你的按钮放在视图的顶部,并为这个按钮添加手势识别器吗?
最后,您的UIButton通过UIControl继承UIView形式。因此,几乎没有任何东西可以用视图做,但不能用按钮做。
答案 3 :(得分:0)
在我的情况下,我通过不使用按钮来修复它,而是使用UITapGestureRecognizer。我的平移手势识别器已添加到背景视图中,并且轻击手势已添加到其上方的视图中。