Как я могу отключить обнаружение касания? - PullRequest
20 голосов
/ 09 июля 2009

Как я могу отключить обнаружение касания в действии, которое выполняется, потому что я не хочу, чтобы персонаж летал в небе как супермен, если игрок щелкает и щелкает внутри действия, персонаж никогда не приземлится, если он продолжит нажимать , Я нашел метод "isDone", это относится к этому методу ?? игрок нажимает -> действие (не может щелкнуть внутри действия) -> действие завершено -> нажмите еще раз ..... это то, что я хочу ~

Ответы [ 8 ]

48 голосов
/ 09 октября 2009

Это лучший ответ на ваш вопрос:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];
45 голосов
/ 09 июля 2009

Отключите взаимодействие с пользователем в вашем представлении до завершения действия, а затем включите его снова.

Чтобы отключить сенсорный

[self.view setUserInteractionEnabled:NO];

Чтобы включить сенсорный

[self.view setUserInteractionEnabled:YES];

Пожалуйста, постарайтесь быть более кратким, что вы хотите в следующий раз.

2 голосов
/ 24 мая 2016

В Свифт 2.2

self.view.userInteractionEnabled = false
1 голос
/ 06 февраля 2017

Свифт 3.0

self.view.isUserInteractionEnabled = false
1 голос
/ 26 июля 2009

Просто сделаю дикое предположение, что вы говорите о конкретном классе Action в Cocos2D. Если это правда, тогда вы должны знать, что каждое действие имеет Bool "isDone", который вы можете проверить, чтобы убедиться, что оно выполнено. Дайте мне знать, если это то, что вы спрашиваете, и я опубликую пример, но есть большой шанс, что вы могли бы говорить о чем-то другом, потому что ваша формулировка настолько запутанная;)

0 голосов
/ 15 июля 2009

Возможно, я не поняла ваш вопрос, но это то, что вы ищете?

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  [Superman Fly];
  self.isTouchEnabled = NO;
}

- (void)SupermanLanded{
  self.isTouchEnabled = YES;
}
0 голосов
/ 09 июля 2009

Почему бы вам не использовать какую-то (простую версию) логическую переменную для запоминания, т.е. isInAction = true и после завершения действия isInAction = false ...

Поэтому, когда кто-то нажимает, вы используете что-то вроде

if (!isInAction) {
   isInAction=true;
   try {
     doYourAction;
   } catch {
     ...
   } finally {
     isInAction=false;
   }
}

// Код - это своего рода псевдокод, потому что я еще не запрограммировал для IPhone только для того, чтобы визуализировать, что я имею в виду.

0 голосов
/ 09 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...