iOS: не получать прикосновения Отменяется при получении собственного всплывающего окна

Я не привык работать над собственным кодом iOS. Извините, что пропустил что-то очевидное здесь.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда пользователь удерживает нажатие касания, а затем перед его выпуском появляется собственное всплывающее окно (разряженная батарея, таймер и т. Д.), Которое не запускает вызов touchesCancelled. Вместо этого он запускает прикосновения, закругленные, когда пользователь перестает касаться экрана.

Тем не менее, этот touchedEnded был реакцией пользователя на всплывающее окно, а не активным решением для использования приложения, и это может привести к неправильному и разочаровывающему поведению.

Насколько я могу судить, touchesCancelled должен срабатывать при потере фокуса, но кажется, что в этом случае фокус теряется не полностью.

Мне интересно, есть ли какой-либо другой способ обнаружить, что было открыто собственное всплывающее окно, и заставить мое приложение работать так, как будто touchchesCancelled было запущено, и избежать непреднамеренного поведения.

Я протестировал некоторые приложения от Apple, и у них одинаковое (на мой взгляд) неправильное поведение. Так что, возможно, мне придется с этим смириться, но я хочу обратиться к более опытным разработчикам iOS и быть уверенным в этом.

Спасибо Саша

1 ответ

Решение

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

В моем решении, в момент вызова applicationWillResignActive, я в основном заставляю приложение работать так, как если бы касания были отменены для каждого касания, которое начиналось без конца или отмены. Когда вызывается фактическое touchesEnded, оно игнорируется, поскольку оно больше не соответствует touchesBegan в моем приложении.

Это похоже на прыжки с трамплина, но для меня это трюк.

Другие вопросы по тегам