Getting the Action of UIGestureRecognizer in iOS

后端 未结 3 1553
一向
一向 2020-12-10 05:59

I have printed a UITableviewCell\'s gesture in – tableView:didSelectRowAtIndexPath method in NSLog as



        
相关标签:
3条回答
  • 2020-12-10 06:14

    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;
    }
    
    0 讨论(0)
  • 2020-12-10 06:19

    UIGestureRecognizer internally maintains an array of targets. There is no public access to this array.

    0 讨论(0)
  • 2020-12-10 06:21

    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.

    0 讨论(0)
提交回复
热议问题