在iOS中获取UIGestureRecognizer的操作

我在NSLog中的 – tableView:didSelectRowAtIndexPath方法中打印了一个UITableviewCell的手势

<UIScrollViewPanGestureRecognizer: 0x11e92080; state = Possible; cancelsTouchesInView = NO; delaysTouchesEnded = NO; view = ; target= <(action=handlePan:, target=)>> 

我已将此UIScrollViewPanGestureRecognizer分配给UIGestureRecognizer以访问其属性,如下所示,

  UIGestureRecognizer *myGes=[temp.gestureRecognizers objectAtIndex:1]; 

我可以访问’myGes’的所有属性

  myGes.state; myGes.cancelsTouchesInView; myGes.delaysTouchesEnded; myGes.view; 

除了一个名为target的属性。

有没有可能访问该属性? 因为我需要执行该操作。

任何意见或建议将不胜感激。

先谢谢你。

有一种方法可以访问属性target ,但我不确定此方法是否会通过Apple批准过程。

 NSMutableArray *targets = [myGes valueForKeyPath:@"_targets"]; id targetContainer = targets[0];//get first target for example id targetOfMyGes = [targetContainer valueForKeyPath:@"_target"]; NSLog(@"%@", targetOfMyGes );//you can see reference for target object 

谢谢neilco – 他的回答有助于创建解决方案。

注意:对象targetOfMyGes的确切类需要自己定义。 默认情况下,它id – 适用于任何对象类。

UIGestureRecognizer内部维护一系列目标 。 没有公共访问此arrays。

我有一个不同的解决方案,这对我有用。 这更像是一次设计更改……您无法从捕获的手势中访问目标。 因此,在触碰发生时和平底锅开始之前,请保持对物体的引用。

 @property (nonatomic, strong) UIButton *myTouchedButton; // reference to button (void)init { ... [card.button addTarget:self action:@selector(cardTouchDownInside:) forControlEvents:UIControlEventTouchDown]; ... } -(void)cardTouchDownInside:(id)sender { NSLog(@"touch down on object"); self.myTouchedButton = (UIButton*)sender; }