2011-09-24 27 views
23

Ho notato un leggero ritardo sullo stato evidenziato di un UIButton quando toccato verso il basso se si trova all'interno di un UIScrollView (o di una tabella). Altrimenti, lo stato evidenziato è praticamente istantaneo.E 'possibile rimuovere il ritardo dello stato evidenziato di UIButton all'interno di un UIScrollView?

Suppongo che questo debba essere designato per fornire all'utente la possibilità di scorrere. Ma sembra proprio che il pulsante non mi risponda. C'è un modo per risolvere questo problema?

risposta

52

In effetti, è una scelta di design. Ha bisogno di questo piccolo tempo per differenziare uno scroll (panGesture) da un tocco. Se elimini questo ritardo, l'utente non sarà in grado di scorrere se posiziona il dito sopra il pulsante, che non è una buona esperienza utente.

Poiché una vista di scorrimento non ha barre di scorrimento, deve sapere se un tocco segnala l'intenzione di scorrere rispetto a un intento di tracciare una sottoview nel contenuto. Per effettuare questa determinazione, intercetta temporaneamente un evento di touchdown iniziando un timer e, prima che il timer scatti, vedendo se il dito che tocca fa un movimento. Se il timer scocca senza una modifica significativa della posizione, la vista di scorrimento invia gli eventi di tracciamento alla vista secondaria toccata della vista del contenuto.

dal UIScrollView Documentation

non mi consiglia la disabilitazione il ritardo, ma se insistete, è possibile impostare in Interface Builder (selezionare la Scroll Visualizza e sul pannello di destra, proprio sotto "rimbalzi Zoom "), o usando questo codice:

scrollView.delaysContentTouches = false 
+0

Grazie! Risposta perfetta Ci penserò. Mi piacerebbe che ci fosse un modo per sbarazzarsi del ritardo, ma comunque abilitare lo scorrimento. – pixelfreak

+2

@pixelfreak non è impossibile creare una visualizzazione a scorrimento personalizzata che farebbe entrambe le cose, ma gli utenti iOS sono abituati a questo comportamento e sarebbe meglio se non si scherza con i concetti base di interazione utente di iOS. –

+0

È possibile farlo solo per le sottoview specifiche della vista di scorrimento, come richiesto? –