如何阻止按钮推翻拖动手势

Posted

技术标签:

【中文标题】如何阻止按钮推翻拖动手势【英文标题】:how to stop a button from overruling a drag gesture 【发布时间】:2013-06-09 18:25:21 【问题描述】:

我有一个可以沿 y 轴在屏幕上拖动的图像,它工作得很好,但是当我在图像顶部放置一个跟踪图像的按钮时(随着图像移动,所以它总是在顶部),当尝试拖动按钮时(因为它位于我要拖动的图像的顶部),图像不会移动。该按钮只是取消拖动手势。如何在允许用户按下按钮的同时防止这种情况发生?我正在使用 UIPanGestureRecognizer

我尝试了各种方法,但都不起作用。请和我保持稳定,我对开发非常陌生,这是我的第一个 App Store 应用 :)

谢谢

【问题讨论】:

所以 UIButton 在 UIImage 上,当你拖动图像触摸图像时它可以工作,但是当你拖动图像触摸按钮时它不起作用? 【参考方案1】:

我不确定这些是否能解决您的问题,但您可以尝试这两种方法,看看哪一种有效。

1) 使 UIButton 成为 UIImage 的子视图,以便继承手势识别器。

2) 使用与图像相同的处理程序向 UIButton 添加平移手势识别器。

【讨论】:

感谢您的回答。你能告诉我如何使 UIButton 成为 UIImage 的子视图吗?我不确定子视图的主题。 您可以在情节提要中按视图,然后按左下角的“显示文档大纲按钮”(带框和左箭头的圆圈)。视图像文件系统一样呈现,您可以将一个拖到另一个表示子类化的视图中。另一种方法是,如果您在标题或私有@interface 中将按钮和 uiimage 表示为属性/对象,您可以在 viewDidLoad 添加行 [self.yourImageViewName addSubview: self.yourButtonViewName] ,其中您的值是您决定调用的它们在您的文件中。 再次感谢您的回复。我尝试了这个,但没有达到预期的效果。按钮仍然不能拖动,也不能按下!我也不得不使用“编码”的方式来做到这一点,因为我无法按照你的指示将按钮拖到图像中。可能是因为两者都在滚动视图中(我把它们放在那里)。我不知道。我认为它们是滚动视图的子视图,对吧?无论如何,与此同时,我会尝试你的第二个建议。但是,如果您认为我在此期间做错了什么,如果您指出我将不胜感激:) 对,我做了你的第二个建议,一切正常。非常感谢你的帮助! :) 我现在明白了子视图是什么,而且我一直都在使用它!

以上是关于如何阻止按钮推翻拖动手势的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Scroll TransitionStyle 阻止 UIPageViewController 上的点击手势

创建可拖动的引脚注释,但应阻止其拖动按钮

如何快速阻止 UIPageViewController 的滑动手势?

如何阻止从超级视图到子视图的手势?

暂时阻止 iCarousel 滚动

UIScrollView 并检测其子视图的手势