Обнаружение касания ладонью / отпускания экрана iphone
Реализация своего рода кнопки вызова бедствия, которая должна работать следующим образом:
- Пользователь запускает приложение и закрывает экран ладонью
- По прошествии некоторого времени пользователь может ввести дополнительные штрихи в течение этого времени или удалить некоторые из существующих (но не все), расположение / форма касаний может измениться.
- Когда пользователь отпускает руку (т. Е. Убирает последнее касание), приложение издает сигнал бедствия.
По сути, приложение должно регистрировать два события: (1) прикосновение к экрану (2) освобождение всех прикосновений
Я пытаюсь использовать методы touchesBegan/touchesEnded, и они работают для касаний небольшой площади (кончиков пальцев), но при касании экрана полной ладонью или даже только краем ладони touchCancelled срабатывает немедленно, пока рука все еще находится на экране. Очевидно, что после ручного отпускания никаких других событий не происходит.
Я пробовал создать подкласс UIWindow и UIApplication и переопределить sendEvent в них, но не получил дополнительной информации - прикосновения к большой области вызывают начало касания и немедленно отменяют касание, после чего отпускание руки ничего не испускает. В некоторых случаях большая площадь соприкасается с огнем вообще без каких-либо событий, даже без прикосновений к началу. По сути, iOS не позволяет мне работать с очень простым сценарием - обнаружением только факта касания / отпускания экрана.
Есть ли способ напрямую запросить состояние касания экрана и не работать с цепочкой респондентов? Или запретить срабатывание события отмены? А может я что-то упускаю?