Touch and drag a UIButton around, but don't trigger it when releasing the finger

前端 未结 3 1693
悲&欢浪女
悲&欢浪女 2021-02-10 17:55

I\'m trying to allow some UIButton instances on one of my views to be touched and dragged around the screen (eventually with momentum, but that\'s for later!). I ha

3条回答
  •  失恋的感觉
    2021-02-10 18:50

    You could use a UIPanGestureRecognizer and tell it to cancel touches in view...

    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        UIPanGestureRecognizer *panRecognizer;
        panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                                action:@selector(wasDragged:)];
        // cancel touches so that touchUpInside touches are ignored
        panRecognizer.cancelsTouchesInView = YES;
        [[self draggableButton] addGestureRecognizer:panRecognizer];
    
    }
    
    - (void)wasDragged:(UIPanGestureRecognizer *)recognizer {
        UIButton *button = (UIButton *)recognizer.view;
        CGPoint translation = [recognizer translationInView:button];
    
        button.center = CGPointMake(button.center.x + translation.x, button.center.y + translation.y);
        [recognizer setTranslation:CGPointZero inView:button];
    }
    
    - (IBAction)buttonWasTapped:(id)sender {
        NSLog(@"%s - button tapped",__FUNCTION__);
    }
    

提交回复
热议问题