Come Tocchi Evita annullato evento?
-
26-10-2019 - |
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.
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.