Question

J'ai deux vues un sous l'autre. Je suis la rotation ci-dessous vue par la détection tactile de vue de dessus. tout en essayant de faire un coup, touche événement annulé est appelé avant touche terminés événement. Tout en se déplaçant le doigt touche commencé et touche les événements se sont appelés, et touche terminé à cette date événement est appelé à la dernière (la plupart du temps). Mais parfois, tout en essayant de se déplacer lentement, touche événement annulé est appelé arrêt des événements tactiles se produire. Donc, je ne pouvais pas vue tourner à vitesse lente. Quel peut être le problème? Comment éviter des touches événement annulé?

Note: Je dessine des graphiques dans les vues à l'aide de base-terrain lib.

Était-ce utile?

La solution

Si vous utilisez un UIGestureRecognizers ils annulent automatiquement des touches à d'autres vues quand ils reconnaissent leur geste. Vous pouvez désactiver ce comportement avec la propriété cancelsTouchesInView de la reconnaissance.

Autres conseils

Si votre n'utilisez pas UIGestureReconizer directlly, être au courant des gestureRecognizers de propriété du UITouch. J'ai le même problème et avec ce code, je résous:

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

Regardez pour UISwipeGestureRecognizer aussi bien. Ce fut l'origine du problème pour moi et est résolu une fois que nous fixons

[recognizer setCancelsTouchesInView:FALSE];

Si défilante est impliqué, décocher sa touche de contenu de la propriété peut-il annuler Le défilement dans le storybord.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top