Как обнаружить круговой жест через опознание жеста?

StackOverflow https://stackoverflow.com/questions/4600690

Вопрос

Я пытаюсь реализовать громкость-контрольную круглую кнопку. В настоящее время я могу определить Swipes по упорству жеста. Как я могу обнаружить круговой жест (по часовой стрелке и против часовой стрелки) на кнопке? Спасибо!

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

Решение

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

Если бывший, ты в значительной степени самостоятельно. Вы, безусловно, можете реализовать ваше решение в качестве собственного пользовательского распознавания жеста: это ожидается Apple, и есть некоторая документация, чтобы заставить вас начаться (Хотя я не видел много рабочих примеров там). Смотрите также Как правильно подкласс UigestureCognizer.

Как общий подход, я бы подумал о регионе для жеста как форма пончика: зона с центром слияние, внутренний радиус R1, и внешний радиус R2. Отказ Когда пользователь касается, вы можете рассчитать расстояние от слияние Используя теорему Пифагорена и угол с вашей любимой функцией Trig. С этим вы можете определить, находится ли связь в зоне. Как пользователь перетаскивает, вы можете обновить значение управления на основе угла. В какой-то момент они либо касаются, либо затрагивают за пределами зоны, и это заканчивает жест. Я предлагаю позволить прикосновению к безблую далеко R1 или снаружи R2: пальцы неточные инструменты.

Другие советы

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

Пожалуйста, когда-нибудь, вилка, клонировать его, используйте его, улучшите его, это открытый источник, вот моя ссылка REPO:

https://bitbucket.org/danielphillips/dpcircularsgillipsegrizer.

Вы пытались написать свой собственный распознатель жеста? В документах есть подробные инструкции.

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

Возможно, пользователю не может нарисовать идеальный круг, и решение, предоставленное @Sixten Otto, было бы хорошо.

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