2

只是我想为UIImageView当用户触摸时添加一个点击手势,调用在另一个类中实现的方法(不是包含 的同一个类UIImageView)。

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

4

4 回答 4

1

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

 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
于 2013-05-29T13:26:24.070 回答
0

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

将 UITapGestureRecogniser 添加到 imageview

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

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

你可以像下面那样做。

imageView.userInteractionEnabled = YES;

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

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

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

希望这会帮助你。

于 2013-05-30T04:31:10.393 回答
0

在初始化时声明识别器选择器

UITapGestureRecognizer *recognizer = 
[UITapGestureRecognizer 
    initWithTarget:objectOfAnotherClass 
    action:@selector(methodImplementedOnObjectOfAnotherClass:)];

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

于 2013-05-29T13:33:52.200 回答
0

这里 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
}
于 2013-05-30T05:25:11.113 回答