Как заставить TouchesEnded - PullRequest
       16

Как заставить TouchesEnded

0 голосов
/ 09 ноября 2011

Пользователь перетаскивает игровой фрагмент (вид i-го изображения) в целевое местоположение.Программа считает, видит, что все предметы находятся в правильных местах, объявляет "Game Over" и устанавливает userInteractionEnabled в NO.

Отлично, за исключением того, что, если пользовательский палец все еще находится на игровой фигуре,пользователь может вытащить кусок обратно из целевой области случайно.«Game Over» показывает, но фигура уже не в правильном месте.

Есть ли способ принудительно сделать штрих-закругление (не обнаруживать прикосновение-закругление), чтобы контакт с игровой фигурой (эффективно) был разорван, когда фигурка находится в конечном пункте назначения (то есть, чтобы пользователь не смогслучайно вытащите его из положения)?

userInteractionEnabled = NO, похоже, не вступит в силу, пока не будет снято касание.

Ответы [ 2 ]

0 голосов
/ 16 июня 2015

Я нашел этот вопрос после того, как захотел сделать очень похожее действие в моем собственном приложении.Я хотел, чтобы метод touchesEnded: запускался сразу после нажатия на движущееся действие (например, метод действия touchDown), но не знал, как этого добиться.В конце концов это то, что я сделал, и это сработало!:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
...

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

  [self touchesEnded:touches withEvent:event];
 });
}

Это сработало отлично!

0 голосов
/ 09 ноября 2011

Мне неизвестен способ принудительного касания.

Очевидно, что один из способов справиться с этим состоит в том, чтобы ваше приложение поддерживало состояние, которое указывает на то, что игра окончена, и защищает от перемещения любых игровых фигур в этом состоянии.

Вы можете попробовать beginIgnoringInteractionEvents, хотяЯ сомневаюсь, что это сделает то, что вы ищете.Я действительно думаю, что управление состоянием в вашем приложении, которое гарантирует, что вы будете делать правильные вещи, а не перемещать кусок после достижения конечного состояния, - это путь, по которому нужно идти.

Из руководства Apple по обработке событий для iOS:

Отключение доставки сенсорных событий на определенный период.Приложение может вызвать метод UIApplication beginIgnoringInteractionEvents, а затем вызвать метод endIgnoringInteractionEvents.Первый метод останавливает приложение от получения событий касания полностью;второй метод вызывается для возобновления получения таких событий.Иногда вы хотите отключить доставку событий, когда ваш код выполняет анимацию.

...