Domanda

Sto ricevendo alcune immagini dalle quali l'utente dovrebbe sceglierne una. Ora non voglio offrire solo un'area di scorrimento piatta con una griglia noiosa. Invece, vorrei mostrare una ruota che contiene quelle immagini. Nella parte superiore sarebbe un marcatore che indica la selezione. Qualcosa di simile ai Picker.

Il problema non è la roba di rotazione; Userei alcune funzioni geometriche per quello. Ma non ho idea di come ottenere effettivamente i gesti di scorrimento su quella ruota. Dove devo iniziare?

A proposito: con circolare non intendo qualcosa come i Picker. Intendo una vera ruota che ha un asse centrale e può essere fatta rotolare. Come i telefoni molto vecchi, come una ruota di bicicletta. Oppure un selettore ruotato di 90 & # 176 ;, rivolto verso di te con l'asse (coordinata Z).

È stato utile?

Soluzione

Se stai parlando di catturare gesti, ecco qui l'esempio che danno nei documenti .

Anche se avrei potuto giurare di aver sentito Alan Cannistraro dire in uno dei primi CS193P lezioni che non devi fare questo, che puoi semplicemente intercettare l'evento swipe ma non riesco a trovarlo.

Potrebbe qualcuno che effettivamente sa cosa stanno facendo, per favore correggimi e rimuoverò questo post, ma per ora so che funzionerà:

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

Altri suggerimenti

Quanto stai pensando a una vista selettore? È possibile caricare una vista di selezione con le proprie visualizzazioni secondarie personalizzate, che potrebbero essere visualizzazioni di immagini. Ciò ti darebbe una visione reale del selettore con le tue immagini, che potrebbe o meno essere ciò a cui stai effettivamente mirando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top