Pregunta

Tengo algunas imágenes de las cuales el usuario debe elegir una. Ahora no quiero ofrecer solo un área de desplazamiento plana con una cuadrícula aburrida. En cambio, me gustaría mostrar una rueda que contiene esas imágenes. En la parte superior habría un marcador que indica la selección. Algo similar a los Pickers.

El problema no es el material de rotación; Usaría algunas funciones geométricas para eso. Pero no tengo idea de cómo obtener los gestos de desplazamiento en esa rueda. ¿Dónde debo comenzar?

Por cierto: con circular no me refiero a algo como los Pickers. Me refiero a una rueda real que tiene un eje central y se puede rodar. Como los teléfonos muy viejos, como una rueda de bicicleta. O un selector girado 90 °, orientado hacia usted con el eje (coordenada Z).

¿Fue útil?

Solución

Si está hablando de capturar gestos, aquí está el ejemplo que dan en los documentos .

Aunque podría haber jurado, escuché a Alan Cannistraro decir en uno de los primeros CS193P conferencias que no tienes que hacer esto, que puedes atrapar el evento de deslizamiento pero no puedo encontrarlo.

¿Podría alguien que realmente sabe lo que está haciendo, corríjame y eliminaré esta publicación, pero por ahora sé que esto funcionará:

#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.
    }
}

Otros consejos

¿Qué tan similar a una vista de selector está pensando? Puede cargar una vista de selector con sus propias subvistas personalizadas, que podrían ser vistas de imágenes. Eso le daría una vista de selector real con sus imágenes, que podría o no ser lo que realmente está buscando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top