I have printed a UITableviewCell\'s gesture in – tableView:didSelectRowAtIndexPath method in NSLog as
I have a different solution to this which has worked for me. This is more of a design change... you cannot access the target from the captured gesture. So instead keep a reference to the object when the touch down happened and before the pan began.
@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;
}
UIGestureRecognizer
internally maintains an array of targets. There is no public access to this array.
There is a way to gain access to the property target
, but I'm not sure that this method will pass the Apple approval process.
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
Thanks neilco - his answer help create solution.
Note: the exact class of the object targetOfMyGes
need to define yourself. By default it id
- suitable for any object class.