Когда прикасается метод "Отменить", вызывается в 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
, и вы можете пометить его, чтобы прекратить отмену, если ваш случай похож на мой случай.
Кажется, во многих случаях ваши прикосновения отменяются, поэтому мой ответ - только один из них.