1

我有一些图像,用户应该从中选择一个。现在我不想只提供一个带有无聊网格的平面滚动区域。相反,我想展示一个包含这些图像的轮子。顶部将是一个指示选择的标记。类似于 Pickers 的东西。

问题不在于轮换。我会为此使用一些几何函数。但我不知道如何真正获得那个轮子上的滚动手势。我必须从哪里开始?

顺便说一句:关于循环,我不是指像 Pickers 这样的东西。我的意思是一个真正的轮子,它有一个中心轴并且可以滚动。像非常古老的电话,像自行车轮子。或者将 Picker 旋转 90°,使轴朝向您(Z 坐标)。

4

2 回答 2

1

如果您正在谈论捕获手势,那么这里是他们在文档中给出的示例

虽然我可以发誓我听到 Alan Cannistraro 在第一个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.
    }
}
于 2009-05-06T18:14:19.520 回答
0

您认为与选择器视图有多相似?您可以使用自己的自定义子视图加载选择器视图,这些子视图可以是图像视图。这将为您提供带有图像的实际选择器视图,这可能是您的实际目标,也可能不是。

于 2009-05-06T21:38:33.740 回答