TouchDown задерживается для UIButton внизу экрана - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть UIButton в нижней части экрана чата.Я использую TouchDown, чтобы обнаружить, что пользователь начал удерживать кнопку и начать запись звука (стандартная функциональность приложения мессенджера).

Проблема в том, что когда кнопка находится внизу экрана, возникает задержка в 1 с с момента, когда я начинаю удерживать кнопку, до момента срабатывания TouchDown.

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

Я обнаружил аналогичный вопрос, iOS - отложенное событие "Touch Down" для UIButton в UITableViewCell , нокнопка не находится в табличном представлении или в виде прокрутки

Переопределение метода кнопки touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) и простая печать событий показывают, что она также имеет такое же отставание.

Это заставляет меня думать, чтозадержка связана с положением кнопки в нижней части экрана.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Оказывается, намекает на https://stackoverflow.com/a/47255802/581164, задержка вызвана ожиданием iOS, если пользователь фактически выполняет системный жест (например, пролистывание в нижней части экрана) вместо нажатия кнопки.

Если я переопределю var preferredScreenEdgesDeferringSystemGestures: UIRectEdge на контроллере корневого представления и установлю его на [.bottom, .right], задержки не будет.Я не знаю, почему [.bottom] недостаточно, я думаю, есть какой-то другой жест iOS для смахивания от правого края экрана, а кнопка расположена в правом нижнем углу.

Всегда просто настройка [.bottom, .right] имеет некоторые негативные последствия, пользователь должен провести два раза, чтобы выполнить жест iOS для нижнего жеста.

Ключ, кажется, устанавливает его только тогда, когда пользователь собирается нажать кнопку записи, как вfunc point(inside point: CGPoint, with event: UIEvent?) -> Bool и затем установите его обратно, когда пользователь отпустит кнопку.

0 голосов
/ 06 декабря 2018

Вы пытались снять отметку представления таблицы / представления прокрутки * Задержка касания вниз с раскадровки?

...