Search code examples
iphoneobjective-cxcodeuigesturerecognizergesture-recognition

Gesture recognizer on button


I'd like to implement a gesture recognizer (swipe action) for a button. The problem is, the buttons are create programmatically and are or aren't existent based on a few conditions. So, I don't know if there are buttons, or how many.

I know I need something like:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if (touch.view == aButtonView) {
        //get the button's tag
    }
}

Of course, the if-statement should return Yes when any button view is pressed...

Anyone has any idea on what the word aButtonView should be? Or if it's even possible? Thanks in advance.


Solution

  • You should think about using UISwipeGestureRecognizer instances. Attach the gesture recognizer to the button objects -

    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self
                                                                                action:@selector(handleSwipe:)];
    swipe.direction = UISwipeGestureRecognizerDirectionUp;
    [button addGestureRecognizer:swipe];
    [swipe release];
    

    and in handleSwipe:

    - (void) handleSwipe:(UISwipeGestureRecognizer *)swipe {
        NSInteger tag = swipe.view.tag;
    }
    


    it should be if ( [gestureRecognizer.view isKindOfClass:[UIButton class]] ) {