添加一个调用另一个类中的方法的手势

简单地说,我想为UIImageView添加一个轻UIImageView手势,当用户触摸时,调用另一个类(不是包含UIImageView的同一个类)中实现的方法。

我可以这样做,如果是这样,我该怎么办?

你可以做到这一点。 但是您需要将目标类实例(将在其中执行方法的类)作为委托或手势添加类中的某些内容。

  UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self.delegate action:@selector(doSomething)]; 

这里的委托将是你去那个类之前必须设置的目标类的实例。

编辑

我会解释一下。 假设您有两个视图控制器类VCA和VCB。 你想通过点击手势从VCB调用VCA中的方法。

在VCB.h中

 @property (nonatomic,assign)VCA *delegate; 

在VCB.m

  UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self.delegate action:@selector(doSomething)]; 

在VCA.m

您将呈现/推送VCB

  VCB * viewController = [[VCB alloc]init]; viewController.delegate = self; // push or present viewController 

在init上声明识别器选择器

 UITapGestureRecognizer *recognizer = [UITapGestureRecognizer initWithTarget:objectOfAnotherClass action:@selector(methodImplementedOnObjectOfAnotherClass:)]; 
  • 不要忘记定义点击次数( numberOfTapsRequired )和失败所需的可选手势识别器( requireGestureRecognizerToFail 🙂

链接到关于选择器的文章。

一种直接的方法是从tapGesture的选择器方法调用另一个类的方法即。

将UITapGestureRecogniser添加到imageview

 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapRecognised)]; [imageView addGestureRecognizer:tapGesture]; 

不要忘记启用UIImageView的userInteraction ,因为默认情况下对于imageview userInteraction是禁用的。

你可以像下面这样做。

 imageView.userInteractionEnabled = YES; 

然后在tapGestureRecogniser的选择器中调用另一个类的方法

 - (void)tapRecognised { [next tappedOnImage]; } 

next是另一个类的对象。 您也可以使用委托来调用该方法。

希望这会帮助你。

这里self.desired视图是你想添加手势的视图,你应该按照以下方式添加手势

和“webViewTapped.delegate = self”意味着你想在用户点击时调用同一个类的函数,你可以使用委托像self.delegate将它改成你想要的函数

 UITapGestureRecognizer *viewTapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)]; webViewTapped.numberOfTapsRequired = 1; webViewTapped.delegate = self; [self.desiredView addGestureRecognizer:viewTapped]; - (void)tapAction:(UITapGestureRecognizer *)sender; { // do your stuff here }