2015-12-15 13 views
9

Attualmente sto lavorando a un componente di ricerca costituito da TextInput e ListView. Carica i risultati da un server esterno e riempie di conseguenza il ListView.TouchableOpacity come elemento in ListView reagisce solo dopo che TextInput ha perso lo stato attivo

C'è anche un TouchableOpacity che chiude il componente di ricerca.

Sfortunatamente, occorrono due pressioni per richiamare il callback di OnPress di TouchableOpacity: uno per lasciare che TextInput perda il focus e uno per attivare il callback. Ma se premo TouchableOpacity per chiudere il componente di ricerca o se premo una delle schede del componente "react-native-tabolla-view-view", reagisce immediatamente e TextInput mantiene il focus.

Quindi, mi chiedo se qualcuno sa se il ListView in qualche modo consuma i tocchi a causa delle sue funzioni di scorrimento.

risposta

23

Ok, mentre scrivevo il mio post stavo già controllando i documenti per ListView e si scopre che ero von la traccia giusta.

C'è un propery chiamato keyboardShouldPersistTaps:

Quando falso, toccando al di fuori del metodo di scrittura concentrati quando la tastiera è in respinge la tastiera. Quando è vero, la vista di scorrimento non cattura i tocchi e la tastiera non si chiude automaticamente. Il valore predefinito è falso.

Ho impostato questa proprietà su true e funziona come previsto. =)

+0

Questo ha funzionato per me! Grazie @webwelten – rmevans9

+0

Non funziona. Ogni volta che un input di testo e un pulsante si trovano all'interno di una scrollView, dopo aver immesso i valori nell'input di testo, è necessario premere due volte il pulsante per farlo funzionare. Uno per perdere l'attenzione sul textInput e il secondo per il pulsante per funzionare. Qualche altra soluzione? –

+2

Siamo spiacenti. Funziona anche con scrollView. Stavo applicando questa proprietà nella scrollView del componente figlio. Quando ho applicato al componente padre ha iniziato a funzionare. –

1

L'utilizzo di "Vero" o "Falso" per "keyboardShouldPresistTaps" è stato rimosso. Invece, utilizzare il seguente:

'mai' (impostazione predefinita): toccando al di fuori del metodo di scrittura concentrati quando la tastiera è in respinge la tastiera. Quando ciò accade, i bambini non riceveranno il rubinetto.

'sempre': la tastiera non respingere automaticamente, e la vista di scorrimento non prenderà i rubinetti, ma i bambini della vista di scorrimento può prendere rubinetti.

'gestito': la tastiera non respingere automaticamente quando il rubinetto è stata gestita da bambini, (o catturato da un antenato).

false: deprecato, utilizzare "mai" invece.

vero: deprecato, utilizzare 'sempre' invece

Problemi correlati