Задержка с сенсорными событиями - PullRequest
2 голосов
/ 03 ноября 2008

У нас есть приложение в AppStore Bust ~ A ~ Spook , с которым возникла проблема. Когда вы нажимаете на экран, мы используем CALayer, чтобы найти положение всех видов во время их анимации, а если вы нажмете один, мы запустим последовательность кубиков. Однако, есть заметная задержка, кажется, что касания буферизируются, и мы получаем событие с опозданием. Есть ли способ опроса или лучший способ реагировать на прикосновения, чтобы избежать этого времени?

Это в UIView не UIScrollView

Ответы [ 4 ]

4 голосов
/ 03 ноября 2008

Используете ли вы UIScrollView для размещения всего этого? Есть свойство, которое называется delaysContentTouches. По умолчанию это ДА, что означает, что представление пытается определить, является ли касание жестом прокрутки, или нет, прежде чем передать его. Вы можете попытаться установить для этого параметра значение NO и посмотреть, поможет ли это.

1 голос
/ 12 мая 2009

Это довольно старый пост о сезонном приложении, поэтому ОП, вероятно, все еще не работает над этой проблемой, но в случае, если другие сталкиваются с этой же проблемой и находят ее полезной. Я согласен с Кримом в том, что перегрузка ЦП является распространенной причиной значительной задержки при обработке касаний, хотя существует много способов оптимизации, которые можно выполнить, прежде чем использовать OpenGL. CALayer довольно хорошо оптимизирован для задач, которые вы здесь описываете.

Сначала мы должны проверить основы:

  • CALayers добавлено к основному виду layer
  • touchesBegan:withEvent: реализовано в главном виде
  • Когда фаза UITouchPhaseBegan, вы вызываете hitTest: на главном экране layer, чтобы найти соответствующий подслой
  • Последовательность штампов начинается на соответствующем объекте модели, обновляя слой.

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

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

0 голосов
/ 28 мая 2009

Если вы выполняете какую-либо анимацию ядра для CALayer с одновременно с тестированием, вы должны получить presentationLayer перед вызовом hitTest: в качестве позиций Слои модели отражают не то, что может быть на экране, а позиции, к которым анимируются слои.

Надеюсь, это поможет.

0 голосов
/ 08 мая 2009

Отложенные касания обычно указывают на перегрузку процессора. Использование NSTimer для межкадровых действий может мешать сенсорной обработке.

Если это касается вашего приложения, то мой совет очень прост: OpenGL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...