Comment Touches Évitez l'événement annulé?
-
26-10-2019 - |
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.
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.