Должен ли я таким образом обнаруживать касания несколькими пальцами?

StackOverflow https://stackoverflow.com/questions/1384792

  •  21-09-2019
  •  | 
  •  

Вопрос

Это метод touchesBegan для представления, в котором включено несколько касаний.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch* touch = [touches anyObject];
    if ([touches count] > 1)
        NSLog(@"multi touches: %d fingers", [touches count]);

    NSUInteger numTaps = [touch tapCount];

    if (numTaps == 1) {
        NSLog(@"single tap");
    } else {
        NSLog(@"multi tap: %d", numTaps);
    }
}

Кажется, я никогда не регистрирую мультитач.Просто одиночное и двойное нажатие.Я ошибаюсь, полагая, что это так же просто, как подсчитать прикосновения?

Это было полезно?

Решение 2

Я попробовал три разных способа, и только один может вернуть от двух до пяти нажатий пальца.Выигрышным механизмом является NSSet *touch = [event allTouches];

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        UITouch* touch = [touches anyObject];
    // the next line will not ever return a multiple tap
    if ([touches count] > 1)
        NSLog(@"multi-touches %d", [touches count]);
    // the next line will return up to 5 (verified) simultaneous taps (maybe more)
        NSSet *touch2 = [event allTouches];
    if ([touch2 count] > 1)
        NSLog(@"multi-touches2 %d", [touch2 count]);
    // the next line only returns 1 tap
        NSSet *touch3 = [event touchesForView:self];
    if ([touch3 count] > 1)
        NSLog(@"multi-touches2 %d", [touch3 count]);
}

Другие советы

Вам следует установить multipleTouchEnabled собственность YES в представлении, чтобы он мог отправить вам несколько номеров UITouch объекты.

Помимо этого, только UITouch измененные объекты передаются.Если вы коснетесь какого-то места и не пошевелите пальцем, а затем коснетесь другого места, будет передан только новый сенсорный объект.Вам следует запросить UIEvent объект для всех активных касаний в представлении:

[event touchesForView:self]

Механизм победы?С ошибками и переменными, которые даже не используются?

несовместимые типы Objective-C «struct AViewController *», ожидается «struct UIView *» при передаче аргумента 1 из «touchesForView:» из отдельного типа Objective-C

AViewController.m:64:неиспользуемая переменная «touch»

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top