Присоединение распознавателя жестов "галочка" к представлению
Затем определяем параметры, с помощью которых можно установить соответствие каракулей, начертанных пальцем пользователя на экране, определению галочки. Как видите, мы определили для нее минимальный угол 50" и максимальный угол 135°. Это довольно широкие допустимые пределы изменения угла, поэтому их, возможно, придется немного ограничить.
Поэкспериментировав немного с этими углами, мы обнаружили, что жесты "галочка" практически совершаются в довольно широких пределах. Именно поэтому мы и выбрали относительно большой допуск на изменение угла. Как показала практика, жесты "галочка” не всегда получаются аккуратными, поэтому мы предположили, что, по крайней мере, некоторые пользователи будут совершать их небрежно. Как однажды сказал один мудрый человек: "Будьте строги к тому, что даете, и терпимы к тому, что берете".
Рассмотрим методы, имеющие отношение к касаниям экрана. Нетрудно заметить, что в каждом из них сначала вызывается реализация суперкласса, чего нам еще не приходилось делать. Но мы должны это сделать в подклассе UIGestureRecognizer, чтобы то же самое было известно и суперклассу о событиях касания экрана.
В методе touchesBegan, withEvent мы определяем точку, в которой пользователь касается экрана в настоящий момент, и сохраняем это значение в переменных lastPreviousPoint и lastCurrentPoint. Поскольку данный метод вызывается а начале жеста, то мы точно знаем, что предыдущей точки касания не было, и поэтому сохраняем текущую точку касания в обеих переменных. Кроме того, мы устанавливаем в нуль текущий отсчет длины линии.
Далее рассчитываем в методе touchesMoved:withEvent: угол между линией, проведенной из точки предыдущего касания в точку текущего касания в текущем положении, а также между линией, проведенной между точками, сохраненными в переменных экземпляра lastPreviousPoint и lastCurrentPoint. Получив этот угол, проверяем, попадает ли он в заданные нами пределы изменения угла, а также убеждаемся в том, что палец пользователя переместился на достаточное расстояние, прежде чем сделать резкий поворот в обратном направлении. Если истинно и то и другое, устанавливаем метку, указывающую на обнаружение жеста "галочка".
- Дата: 20-01-2015, 21:21