在一个 ViewController 中为 UIImageView 和 UIView 添加手势

Posted

技术标签:

【中文标题】在一个 ViewController 中为 UIImageView 和 UIView 添加手势【英文标题】:Adding gestures for UIImageView and UIView at one ViewController 【发布时间】:2013-01-24 13:26:49 【问题描述】:

新手问题。 在 IB 中,我将 UIImageView 添加到场景中,并以这种方式在 -viewDidLoad 中为其设置了一些手势:

image.userInteractionEnabled = YES;
image.multipleTouchEnabled = YES;

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(controlPan:)];
[image addGestureRecognizer:pan];

pan.delegate = self;
// and few others gestures same way
...

手势效果很好。之后在 IB 中,我将 UIView 添加到同一场景并实现与之前代码完全相同的手势,再次在 -viewDidLoad 中。但在那之后,UIView 和 UIImageView 的手势都停止工作了。我是否需要为此视图制作 .h 和 .m 并在那里实现手势识别器,或者原因可以在其他东西中?

【问题讨论】:

你是否在这里为 UIView 和 UIImageController 设置了相同的方法:action:@selector(controlPan:)?如果是,请尝试设置不同的处理程序方法。 是的,它们都连接到同一个方法。我试图连接到另一个,现在它工作了!非常感谢你!但是为什么之前手势被屏蔽了? 如果我的回答对您有帮助,请标记为正确。 【参考方案1】:

如果您有相同的处理程序方法,则需要区分来自哪个对象手势,以便正确处理动作。如果您为每个对象设置不同的处理程序方法,则不必关心从哪个对象调用手势。

【讨论】:

以上是关于在一个 ViewController 中为 UIImageView 和 UIView 添加手势的主要内容,如果未能解决你的问题,请参考以下文章

ViewController 的子视图的 IBOutlets 在 Storyboard 的 viewDidLoad 中为零

Storyboard - 在 Storyboard 中为同一个 ViewController 创建两个不同的视图

从 XIB 文件中为 ViewController 视图加载自定义 UIView

在 AppDelegate 中为其他 Viewcontroller 初始化 managedContect

将 UIButton 向下移动 10px 并打开新的 ViewController

在 StoryBoard 中为 UIBarButton 显示图像而不是文本