Как реализовать механизм круговой прокрутки? - PullRequest
1 голос
/ 06 мая 2009

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

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

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

Ответы [ 2 ]

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

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

Хотя я мог поклясться, я слышал, как Алан Каннистраро сказал в одной из первых 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.
    }
}
0 голосов
/ 07 мая 2009

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

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