Вопрос

Функция touchesMoved ведет себя по-разному в iPhone и симуляторе.

Интервал повторения (частота обновления) функции touchesMoved это намного быстрее, чем симулятор.Есть ли способ справиться с этой разницей?

Это было полезно?

Решение

Часто люди находят это проблемой, потому что они делают что-то интенсивное в обработчике touchesMoved, и когда события поступают очень часто, это приводит к тому, что интерфейс, по-видимому, отстает.

Относительно простым способом справиться с этим является:Прежде всего, в обработчике touchesMoved сохраните положение касания в переменной, которая представляет положение того, что отслеживает палец.

Немедленно вернитесь из обработчика touchesMoved.Создайте объект NSTimer и установите свой контроллер просмотра в качестве его делегата, и пусть он выполняет любое поведение при перерисовке / просмотре перемещения, которое раньше было в вашем обработчике touchesMoved.Таким образом, вы получаете почти постоянное движение независимо от времени между событиями touchesMoved.

Если вы действительно продвинуты, вы можете использовать пользовательский NSRunLoop вместо использования таймера, но это больше, чем я могу здесь объяснить :) Общая идея такова:не делайте все в обработчиках событий touch.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top