在视图或控制器类中放置手势识别器
问题描述:
我一直在网上寻找GestureRecognizer教程,并看到大多数人直接在视图中使用例如UIPanGestureRecognizer
。这是常见的做法,如果是这样,为什么不在控制器中?在视图或控制器类中放置手势识别器
我在控制器中生成我的视图,并使用手势时需要调用的方法。委托方法应该如何,如果我的手势识别器在视图类中,以及要在控制器类中调用的方法?
答
一个简单UIGestureRecognizer
实施,最在我看来,常见的是如下:
//this is where you create the view that you want to add the gesture recognizer
UIImageView * imageView = [[UIImageView alloc] initWithFrame:frame];
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] init];
tapRecognizer.numberOfTapsRequired = 1;
[tapRecognizer addTarget:self action:@selector(imageViewTapped:)];
imageView.userInteractionEnabled = YES;
[imageView addGestureRecognizer:tapRecognizer];
创建手势识别并将其添加到UIView
子类可以拿到水龙头与您上面所指出的功能后:
- (void)imageViewTapped:(UIGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer.state == UIGestureRecognizerStateRecognized)
{
NSLog(@"tap recognized!");
}
}
所以基本上,你不必担心控制器/视图的困境。 您总是将gesturerecognizer添加到视图。在添加手势识别器时添加一个目标函数,您需要在控制器类中实现该目标函数。
P.S This SO Question might clarify in detail of the dilemma you are facing
从某种意义上说,是的,这违反了MVC模式。正如你所说,这个观点不应该与如何控制它有关,在应用程序的另一部分将这些代码分组是更好的习惯。
答
您可以拖动的手势到故事(到视图控制器),too.Then从文档大纲你做一个动作(在VC)为该姿势