Отключить жест iOS Reachability Swipe в игре iOS - PullRequest
1 голос
/ 15 марта 2020

У меня есть игра iOS с несколькими элементами управления в нижней части экрана, которые можно сильно ударить. Когда игрок проводит вниз, если его палец соскальзывает с нижней части экрана, запускается жест доступности "", также . Затем он скользит вниз по экрану, перемещая эти элементы управления со страницы и скрывая половину игры. Очевидно, что это не является намерением игроков и требует, чтобы они были очень точными c со своими свайпами, что не очень интуитивно или забавно.

На округленном наборе айфонов элементы управления примерно в 100pt от внизу экрана, чтобы освободить место для индикатора «домой», который помогает предотвратить эту проблему во многих ситуациях, но на устройствах прямоугольной формы они гораздо ближе в 10 точек:

Swipe down example

В моем элементарном тестировании я обнаружил, что, даже если на экране начнется прокрутка, начинающаяся с высоты 300pt, все время до основания экрана, сработает доступность. Поэтому поднимать мои элементы управления выше - это не решение, так как это ставит их мертвую точку на экране (что также блокирует фокус игры) и недоступно для некоторых телефонов.

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

Существуют ли какие-либо указания, примеры или рекомендации по урегулированию конфликтов с этим конкретным c жестом доступности?

Ответы [ 2 ]

4 голосов
/ 16 марта 2020

Вы не хотите его отключать, вы хотите отложить его.

см. https://developer.apple.com/documentation/uikit/uiviewcontroller/2887512-preferredscreenedgesdeferringsys

Чтобы использовать это, вы хотите переопределить предпочитаемыйScreenEdgesDeferringSystemGestures для отсрочки ту часть экрана, которую нужно задержать.

В вашем случае:

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return [.bottom]
}

Теперь, если вы делаете это динамически c, вам также нужно будет позвонить setNeedsUpdateOfScreenEdgesDeferringSystemGestures(), чтобы уведомить iOS, что ваши правила меняются.

0 голосов
/ 15 марта 2020

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

...