обрабатывать как событие касания, так и распознаватель жестов


Я использую UISwipeGestureRecognizer и мой перезаписанный

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

Похоже, что touchesBegan и touchesMoved продолжают отслеживать касания до тех пор, пока не будет распознан жест Swipe, а touchesEnded не вызван (так же, как touchesCancelled). Но мне нужно и распознаватель жестов салфетки, и прикосновения, чтобы сделать эту работу, как я могу это сделать?

1 2

1 ответ:

Сначала перетащите распознаватель жестов салфетки из библиотек в поле зрения.

сс

И вы отметите пункт отменено в представлении.

сс

Написать код, реагирующий жеста.

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

Затем напишите метод делегата касания.

- (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];
}

Теперь вы можете перемещать изображение без отмены, и вы можете провести пальцем по экрану, чтобы установить синий цвет (жест салфетки успешно распознается). Вы оба можете. И, когда касание заканчивается, окно цвет меняется на красный.

сс

Вы можете скачать этот пример проекта и просто запустить его:

Https://github.com/weed/p120812_TouchAndGesture