Должен ли я таким образом обнаруживать касания несколькими пальцами?
-
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»