2013-02-11 2 views
6
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

В настоящее время я получаю 1 объект вкак отключить touchBegan: для multi-touch?

touches 

, когда я делаю кран с двумя пальцами одновременно (проведение ключа опции и нажав на тренажере). Я считаю, это связано с тем, что я не включил

multipleTouchEnabled 

свойство прилагаемого вида. Я хочу сделать так, чтобы я не регистрировал это событие для мультитач.

Заглядывая в вопросе, похоже, что это будет работать, если я включаю multipleTouchEnabled, а затем сделать

if ([touches count] > 1) { 
    return; 
} 

в моем

touchesBegan: 

Однако, это мне кажется странным, что я ВКЛЮЧЕНИЕ multipleTouchEnabled для ОТКЛЮЧЕНИЯ нескольких касаний, и меня беспокоит, будут ли побочные эффекты. Есть ли лучший способ решить мою проблему?

+3

Имейте в виду: на реальном устройстве маловероятно, что пальцы пользователя будут касаться экрана точно в одно и то же время. Вы должны быть готовы к '-touchesBegan:' для вызова дважды (или более) с разными касаниями. –

ответ

0

Вы можете использовать жест распознаватель, это, вероятно, более readbale чем делегат касаний, даже если ваш код работает:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myAction:)]; 
gestureRecognizer.numberOfTouchesRequired = 2; 
0

Если обязательно использовать NSTouches, то вы можете использовать следующие методы, чтобы получить желаемая задача.

[view setMultipleTouchEnabled:NO]; 
[view setExclusiveTouch:YES]; 
более того вы можете играть с

setMultipleTouchEnabled:

держа setExclusiveTouch

вида по Да

1

Сначала добавьте жест распознаватель на ваш взгляд:

UITapGestureRecognizer *multipleTouches = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleMultiTap:)]; 
multipleTouches.numberOfTouchesRequired = 2; 
[yourViewName addGestureRecognizer:multipleTouches]; 
[multipleTouches release]; 

Надеется, что это поможет.

2

Вы должны просто отключить свойство multitouch на представлении, в IB вы должны фактически перейти на боковую панель и нажать на то, что говорит вид рядом с владельцем файлов, чтобы его получить, а затем снимите флажок, или вы можете сделать это в коде в viewdidload:

self.view.multiTouchEnabled = NO;

0

Вы можете использовать эту линию, чтобы избежать множественных касаний в точке, установить эксклюзивное касание «Да» на ваш взгляд.

[self.view setExclusiveTouch:YES]; 
Смежные вопросы