如何在子类中使用UIGesterRecognizer

时间:2012-12-18 23:05:29

标签: iphone objective-c delegates uislider

我有一个子类:

CustomView : UIScrollView. 

在这个子类的内部,我有一些方法,比如用一些UI元素填充我的自定义视图。我想为这些元素添加UIGesterRecognizer功能,但我不知道如何处理设置委托和添加选择器:

@implementation  CustomView 

-populateMe{

     UIImageView *iv = [...];
     UIGesterRecognizer r = [UIGesterRecognizer alloc] 
          initWithTarget:self 
          action:@selector(handleMySwipe:); 
                          //<==where to declare handler

     r.delegate = self; //<==COMPILER ERROR self
     [iv.addGestureRecognizer r];
} 

所以我的问题是我在上面评论过的地方:self不是一个有效的委托(我试过self.superclass)我需要在哪里声明一个动作处理程序,即handleMySwipe。

请解释我明白了。

1 个答案:

答案 0 :(得分:0)

CustomView 可能是代理人,如果您为其实施UIGestureRecognizerDelegate protocol。也就是说,在协议要求的CustomView类中实现一些方法。

完成后,您应该能够将目标参数设置为self而不会出现任何错误。由于您的目标现在是self,因此您需要在 handleMySwipe:类中实现选择器/方法CustomView ,因为这是它所寻找的位置(靶)。

- (void) handleSwipe:(UIGestureRecognizer *)gr {
}