我有一张由自定义视图绘制的卡片。 我想为每张卡添加一个轻扫手势,以便翻转和选择。 由于每个卡片视图都需要手势,因此我选择在视图的 initWithFrame:方法中添加手势。 但是,我想把它留给我的控制器来处理这个手势,因为选择卡是我控制器中的一种方法。 这是我的代码:
[self addGestureRecognizer:[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)]];
实际上我需要目标是我的控制器,我想在我的控制器中调用一个名为swipe的方法。目标自我只留下手势处理来查看自己。
也许我不能简单地让我的控制器替换目标。任何人都可以告诉我解决这个问题的正确方法吗?
答案 0 :(得分:2)
您的观点不应该知道它的控制器是什么。 (这会增加耦合并降低凝聚力,这很糟糕。)
此问题的常见解决方案是您的视图声明委托协议。您的视图控制器可以将自己设置为视图的委托。然后,您的视图的swipe:
方法将调用委托方法。
例如代码,请参阅this question。
答案 1 :(得分:1)
有谁能告诉我解决这个问题的正确方法?
如果手势在视图控制器中操作,也许您应该让视图控制器将手势添加到视图中。视图控制器处于有利位置,可以同时引用视图和自身。您可以在很多地方开展工作 - 例如-viewDidLoad
。