我有一些图像,用户应该从中选择一个。现在我不想只提供一个带有无聊网格的平面滚动区域。相反,我想展示一个包含这些图像的轮子。顶部将是一个指示选择的标记。类似于 Pickers 的东西。
问题不在于轮换。我会为此使用一些几何函数。但我不知道如何真正获得那个轮子上的滚动手势。我必须从哪里开始?
顺便说一句:关于循环,我不是指像 Pickers 这样的东西。我的意思是一个真正的轮子,它有一个中心轴并且可以滚动。像非常古老的电话,像自行车轮子。或者将 Picker 旋转 90°,使轴朝向您(Z 坐标)。
我有一些图像,用户应该从中选择一个。现在我不想只提供一个带有无聊网格的平面滚动区域。相反,我想展示一个包含这些图像的轮子。顶部将是一个指示选择的标记。类似于 Pickers 的东西。
问题不在于轮换。我会为此使用一些几何函数。但我不知道如何真正获得那个轮子上的滚动手势。我必须从哪里开始?
顺便说一句:关于循环,我不是指像 Pickers 这样的东西。我的意思是一个真正的轮子,它有一个中心轴并且可以滚动。像非常古老的电话,像自行车轮子。或者将 Picker 旋转 90°,使轴朝向您(Z 坐标)。
如果您正在谈论捕获手势,那么这里是他们在文档中给出的示例。
虽然我可以发誓我听到 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.
}
}
您认为与选择器视图有多相似?您可以使用自己的自定义子视图加载选择器视图,这些子视图可以是图像视图。这将为您提供带有图像的实际选择器视图,这可能是您的实际目标,也可能不是。