Когда прикасается метод "Отменить", вызывается в iPhone?

Я могу понять, что, когда пользователь просто касается представления, затрагивает "Начал и закончил". Когда пользователь щелкает рукой по представлению, затрагивается метод Moved. Но когда затрагивает отмененный вызов, или по каким действиям на пользователя этот метод вызывается?

Ответы

Ответ 1

Я думаю, что, вероятно, самая распространенная причина для touchsCancelled, вызываемая (поскольку iOS 3.2 в любом случае) следует за распознаванием жестов с помощью UIGestureRecognizer. Если у вашего представления есть какой-либо признак распознавания жестов, который прикреплен к нему, часто очень важно обеспечить пользовательскую реализацию touchtsCancelled method - обратите внимание, что это включает готовые представления, которые используют распознаватели жестов, включая UIScrollView.

По умолчанию распознаватели жеста отменяют доставку штрихов на просмотр хит-теста при распознавании, хотя это поведение можно отключить. Это включает в себя отправку сообщений touchsCancelled для этого вида, скорее всего, после касанияBegan или touchsMoved сообщение. Если ваш код обработки касания опирается на код, реализованный в методе touchesEnded, возможно, это никогда не будет запущено, и может возникнуть какая-то серьезная проблема, следовательно, необходимо правильно связать любые свободные концы в касаниях. Отказано.

Внутри и обратно функции распознавания жестов, очевидно, немного сложнее, чем я упоминал здесь - я бы настоятельно рекомендовал читать Apple Распознавания жестов документация.

Кроме того, проверьте видео WWDC на распознавателях жестов (начиная с 2010 года).

Ответ 2

Примечание. Прикосновения также отменяется, если вы запускаете анимацию UIView после touchesBegan. Чтобы предотвратить это, убедитесь, что вы включили UIViewAnimationOptionAllowUserInteraction:

например.

[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
            self.aView.hidden = NO;
            self.aView.alpha = 1;
        } completion:nil];

Ответ 3

Из Apple Reference документы

Отправлено в приемник, когда система событие (например, предупреждение с низкой памятью) отменяет событие касания.

Обсуждение

Этот метод вызывается, когда CocoaСистема Touch получает систему прерывание, требующее отмены событие касания; для этого он генерирует объект UITouch с фазы UITouchPhaseCancel. прерывание - это то, что может привести к тому, что приложение больше не будет активный или вид, который нужно удалить из окно

Когда объект получает touchsCancelled: withEvent: сообщить об этом должен очистить любую информацию о состоянии который был установлен в его touchesBegan: withEvent: реализация.

Стандартная реализация этого метод ничего не делает. Однако UIKit подклассы UIResponder, в частности UIView, сообщение в цепочке ответчиков.

Ответ 4

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

Он отправляет сообщения touchedCancelled: withEvent: сообщение, когда сенсорная последовательность отменяется системным событием, таким как входящий телефонный звонок.

Ответ 5

enter image description here

Я обрабатывал touchesBegan()/touchesMoved() для представления в UIScrollView, что сложно. Мои прикосновения отменили где-то, когда я ущипнул (как-то это нормально с движением в одно касание), я исследовал, как перестать быть отмененным. Я выяснил, что в UIScrollView есть свойство Can Cancel On Scroll, и вы можете пометить его, чтобы прекратить отмену, если ваш случай похож на мой случай.

Кажется, во многих случаях ваши прикосновения отменяются, поэтому мой ответ - только один из них.