process both touch event and gesture recognizer
Asked Answered
R

1

2

I use UISwipeGestureRecognizer and my overwritten

-(void)touchesBegan...,-(void)touchesEnded...,-(void)touchesMoved... methods.

It seems that touchesBegan and touchesMoved keep tracking touches untill Swipe Gesture recognized and touchesEnded is not called (same as touchesCancelled). But I need both swipe gesture recognizer and touchesEnded to do the job, how can i do it?

Rawdon answered 12/8, 2012 at 9:47 Comment(1)
could you show some code so that we know what we are speaking of?Sankey
N
10

At first, drag and drop the Swipe Gesture Recognizer from Libraries into View.

ss

And you check off the item canceled in View.

ss

Write code to respond swipe gesture.

- (IBAction)swipe:(id)sender {
    v.backgroundColor = [UIColor blueColor];
}

Then, write touch delegate method.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch* touch = [touches anyObject];    
    CGPoint pt = [touch locationInView:self];
    layer.frame = CGRectMake(pt.x, pt.y, 100, 100);
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch* touch = [touches anyObject];    
    CGPoint pt = [touch locationInView:self];
    layer.frame = CGRectMake(pt.x, pt.y, 100, 100);
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    layer.frame = CGRectMake(0, 0, 100, 100);
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.backgroundColor = [UIColor redColor];
}

Now you can move image without cancelled, and you can swipe the screen to set color blue (Swipe Gesture is successfully recognized). Both you can. And, when touch ends, the window color changes to red.

ss

You can download this sample project and just run it:

https://github.com/weed/p120812_TouchAndGesture

Norma answered 12/8, 2012 at 10:50 Comment(1)
thanks, that's what i needed! In my scenario, i also had to untick "delay end".Warehouseman

© 2022 - 2024 — McMap. All rights reserved.