Domanda

Ho due viste una sotto l'altra. Sto ruotando la sotto la vista con il tatto di rilevamento della vista dall'alto. durante il tentativo di fare un colpo, tocca evento annullato viene chiamato prima tocchi conclusosi evento. Durante lo spostamento i tocchi delle dita cominciarono e tocchi spostati eventi sono chiamati, e poi tocca evento conclusosi è chiamato all'ultimo (per lo più). Ma a volte evento durante il tentativo di muoversi lentamente, tocca annullato è chiamato fermare gli eventi touch a verificarsi. Quindi non ho potuto vista la rotazione in bassa velocità. Quale può essere il problema? Come tocchi Evita annullato evento?

Nota: Sto disegnando alcuni grafici in vista utilizzando core-plot lib.

È stato utile?

Soluzione

Se si utilizza qualsiasi UIGestureRecognizers si annullano automaticamente tocchi ad altre viste quando riconoscono il loro gesto. È possibile disattivare questo comportamento con la proprietà cancelsTouchesInView del riconoscitore.

Altri suggerimenti

Se il vostro non si utilizza UIGestureReconizer directlly, essere consapevoli dei gestureRecognizers proprietà del UITouch. Ho lo stesso problema e con questo codice ho risolto:

if (event.type == UIEventTypeTouches)
{
    NSSet* tmpTouches = [event  touchesForView:m_PhotoView];
    if ([tmpTouches count] == 2)
    {
        UITouch *tmpTouch1 = [[tmpTouches allObjects] objectAtIndex:0];
        UITouch *tmpTouch2 = [[tmpTouches allObjects] objectAtIndex:1];
        if ((tmpTouch1 != nil)&&(tmpTouch2 != nil))
        {
            UIGestureRecognizer * tmpG;
            if ([tmpTouch1.gestureRecognizers count] > 0)
            {
                tmpG = [tmpTouch1.gestureRecognizers objectAtIndex:0];
                tmpG.cancelsTouchesInView = NO;
            }
            if ([tmpTouch2.gestureRecognizers count] > 0)
            {
                tmpG = [tmpTouch2.gestureRecognizers objectAtIndex:0];
                tmpG.cancelsTouchesInView = NO;
            }
            // Code ...
        }
    }
}

guardare fuori per UISwipeGestureRecognizer pure. Questa è stata la causa del problema per me e si risolve una volta che abbiamo impostato

[recognizer setCancelsTouchesInView:FALSE];

Se una vista scorrimento è coinvolto, deselezionare il suo tocco contenuti proprietà Impossibile annullare sul rotolo nella storybord.

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