2016-03-30 19 views
12

Ho implementato una barra di ricerca che include TextInput e un pulsante di ricerca. L'idea è fondamentalmente di digitare ciò che si desidera cercare e premere il pulsante di ricerca. Il mio problema è che il pulsante non è cliccabile mentre TextInput è attivo. Significato Devo fare clic due volte per cercare, una volta per TextInput per perdere lo stato attivo e una volta per premere il pulsante di ricerca.TouchableOpacity non selezionabile mentre TextInput è attivo

Ecco il mio codice:

<View style={styles.searchView}> 
    <View style={styles.textInputView}> 
     <View> 
      <TextInput style={styles.textInput} 
         placeholder="Sök användare" 
         multiline={false} 
         autoFocus={true} 
         autoCapitalize="words" 
         underlineColorAndroid="transparent" /> 
     </View> 
    </View> 
    <TouchableOpacity> 
     <View style={styles.searchButton}> 
      <Image style = {styles.searchThumbnail} 
         source = {require('../images/navigatorThumbnails/search.png')}/> 
     </View> 
    </TouchableOpacity> 
</View> 

C'è un modo per rendere la cliccabile TouchableOpacity mentre il TextInput è attiva?

+0

Puoi pubblicare il resto del codice? La funzione onPress e il chiamante? –

+0

Non ho ancora scritto la funzione di ricerca effettiva. Quindi il Touchable non chiama nulla se premuto. – swescot

+0

Il componente è all'interno di ListView o ScrollView? – mbernardeau

risposta

14

C'è una proprietà denominata keyboardShouldPersistTaps su ScrollView (e anche ListViews).

Per la versione React-Native> = 0,41

La documentazione dice:

determina quando la tastiera deve rimanere visibile dopo un rubinetto.

  • '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 da', la tastiera non si chiude automaticamente quando il tocco è stato gestito da un bambino (o catturato da un antenato).

Set a always o handled per avere il comportamento previsto.

versione non aggiornata per React-Native < 0,41

La documentazione dice:

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.

Impostare su true per il comportamento previsto. Potrebbe essere necessario impostare questo puntello in diversi punti nell'albero dei componenti.

+0

Funziona perfettamente!Grazie mille :) – swescot

+0

Ha fatto il trucco. Per tua informazione, ho impostato il puntello su 'keyboardShouldPersistTaps =" gestito "'. –

+0

@JoshPinter Questa "via di mezzo" tra vero e falso è arrivata con v0.41. Grazie, aggiornerò la mia risposta – mbernardeau

Problemi correlati