如何让控制器处理视图中添加的手势? iOS版

时间:2014-09-19 15:08:10

标签: ios xcode

我有一张由自定义视图绘制的卡片。 我想为每张卡添加一个轻扫手势,以便翻转和选择。 由于每个卡片视图都需要手势,因此我选择在视图的 initWithFrame:方法中添加手势。 但是,我想把它留给我的控制器来处理这个手势,因为选择卡是我控制器中的一种方法。 这是我的代码:

[self addGestureRecognizer:[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)]];

实际上我需要目标是我的控制器,我想在我的控制器中调用一个名为swipe的方法。目标自我只留下手势处理来查看自己。

也许我不能简单地让我的控制器替换目标。任何人都可以告诉我解决这个问题的正确方法吗?

2 个答案:

答案 0 :(得分:2)

您的观点不应该知道它的控制器是什么。 (这会增加耦合并降低凝聚力,这很糟糕。)

此问题的常见解决方案是您的视图声明委托协议。您的视图控制器可以将自己设置为视图的委托。然后,您的视图的swipe:方法将调用委托方法。

例如代码,请参阅this question

答案 1 :(得分:1)

  

有谁能告诉我解决这个问题的正确方法?

如果手势在视图控制器中操作,也许您应该让视图控制器将手势添加到视图中。视图控制器处于有利位置,可以同时引用视图和自身。您可以在很多地方开展工作 - 例如-viewDidLoad