Вопрос

У меня есть несколько изображений, из которых пользователь должен выбрать одно. Теперь я не хочу просто предлагать плоскую область прокрутки со скучной сеткой. Вместо этого я хотел бы показать колесо, которое содержит эти изображения. В верхней части будет маркер, указывающий на выбор. Что-то похожее на сборщиков.

Проблема не в вращении; Я бы использовал некоторые геометрические функции для этого. Но я понятия не имею, как на самом деле получить жесты прокрутки на этом колесе. С чего мне начать?

Кстати: с круговым я не имею в виду что-то вроде сборщиков. Я имею в виду реальное колесо, которое имеет центральную ось и может катиться. Как очень старые телефоны, как велосипедное колесо. Или пикер, повернутый на 90 & # 176; лицом к вам (ось Z).

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

Решение

Если вы говорите о захвате жестов, то вот пример, который они приводят в документах .

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

Может ли кто-то, кто действительно знает, что он делает, поправьте меня, и я удалю этот пост, но сейчас я знаю, что это будет работать:

#define HORIZ_SWIPE_DRAG_MIN  12
#define VERT_SWIPE_DRAG_MAX    4

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    startTouchPosition = [touch locationInView:self];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint currentTouchPosition = [touch locationInView:self];

    // If the swipe tracks correctly.
    if (fabsf(startTouchPosition.x - currentTouchPosition.x) >= HORIZ_SWIPE_DRAG_MIN &&
        fabsf(startTouchPosition.y - currentTouchPosition.y) <= VERT_SWIPE_DRAG_MAX)
    {
        // It appears to be a swipe.
        if (startTouchPosition.x < currentTouchPosition.x)
            [self myProcessRightSwipe:touches withEvent:event];
        else
            [self myProcessLeftSwipe:touches withEvent:event];
    }
    else
    {
        // Process a non-swipe event.
    }
}

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

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

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