只是我想为UIImageView
当用户触摸时添加一个点击手势,调用在另一个类中实现的方法(不是包含 的同一个类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
tapGesture
一种直接的方法是从ie的选择器方法中调用另一个类的方法。
将 UITapGestureRecogniser 添加到 imageview
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapRecognised)];
[imageView addGestureRecognizer:tapGesture];
不要忘记启用userInteraction
UIImageView,因为默认情况下 imageview userInteraction 是禁用的。
你可以像下面那样做。
imageView.userInteractionEnabled = YES;
然后在tapGestureRecogniser的选择器中调用另一个类的方法
- (void)tapRecognised
{
[next tappedOnImage];
}
这next
是另一个类的对象。您也可以使用委托来调用该方法。
希望这会帮助你。
在初始化时声明识别器选择器
UITapGestureRecognizer *recognizer =
[UITapGestureRecognizer
initWithTarget:objectOfAnotherClass
action:@selector(methodImplementedOnObjectOfAnotherClass:)];
这里 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
}