2017-10-24 2 views
0

Ich habe einen Feed von Elementen, die etwa wie folgt aussieht:Wie „Stack“ Touch-Ereignisse in Reaktion india

, was ich zu erreichen versuchen:

Wenn der Benutzer Wenn Sie ein Element im Feed drücken (dargestellt durch die schwarze Box), werden sie auf eine separate Seite für diesen Artikel gebracht. Wenn der Benutzer auf das Sternsymbol klickt, kann er das Element "favorisieren".

Wie ich versuche, es zu tun:

Ich bin derzeit versucht, dies durch s nisten zwei TouchableOpacity‘(durch die schwarzen Kästchen dargestellt) zu implementieren, wobei die innere/Kind TouchableOpacity hat einen zIndex: 2 Stil angewendet zu ihm.

Der Stil zIndex scheint dem Kindcontainer keine Priorität für Berührungsereignisse zu geben, also fragte ich mich, ob jemand weiß, wie ich dieses Muster implementieren kann. Ich denke, ich könnte die PanResponder verwenden müssen, aber es scheint wie eine sehr ausführliche Möglichkeit, diese Funktionalität hinzuzufügen.

Alle Kommentare oder Beispiele würden sehr geschätzt werden! Vielen Dank.

Antwort

1

kann man nicht einfach Nest TouchableOpacity ein TouchableOpacity in Ihren Eltern:

soll wie folgt strukturiert sein? Ich habe ein Modell-Projekt getan und dies scheint unter

<View> 
    <TouchableOpacity 
     style = {{backgroundColor: 'red', height: 100}} 
     onPress = {() => {console.log("PARENT METHOD")}}> 
      //content 
      <TouchableOpacity 
       style = {{width: 30, height: 30, backgroundColor: 'yellow', 
             position: 'absolute', right: 5, bottom: 5}} 
       onPress = {() => {console.log("CHILD METHOD")}}> 
       //content 
      </TouchableOpacity> 
     </TouchableOpacity> 
</View> 

ich Protokolle verwendet habe, zu arbeiten, und wenn die kleine verschachtelte Box gedrückt wird, werden nur Kind Verfahren angemeldet, und in ähnlicher Weise für, wenn ich die übergeordnete Ansicht drücken.

enter image description here

Log-Ausgang: unabhängige zeigt berührt

enter image description here

Lassen Sie mich wissen, ob dies

+0

Ja, Sie haben Recht. Es scheint ein Problem mit Berührungsereignissen in einer Bibliothek zu geben, die ich verwende [read-native-snap-carousel] (https://github.com/archriss/react-native-snap-carousel/) – pingo

1

Warum nicht so etwas wie unten:

<View style={{flex-direction: "row"}}> 
    <View> 
     <TouchableOpacity onPress={this.goToDetails.bind(this)}> 
     </TouchableOpacity> 
    </View> 
    <View> 
     <TouchableOpacity onPress={this.goToDetails.bind(this)}> 
     </TouchableOpacity> 
     <TouchableOpacity onPress={this.favoriteItem.bind(this)}> 
     </TouchableOpacity> 
    </View> 
</View> 

Wo zwei Ansichten in einer Reihe haben, den ersten Blick hat man TouchableOpacity, und die zweite Ansicht hat zwei TouchableOpacity s in aa Spalte (wo erste ist ähnlich vorhergehende TouchableOpacity, und die Sekunde ist, das Einzelteil zu bevorzugen).

enter image description here

+0

Dank für diesen Vorschlag hilft, ich habe dies auch zu denken. Ein Nachteil dieses Ansatzes ist, dass ich die "Opazitäts" -Feedback auf dem Elternelement verlieren, wenn der Benutzer es drückt (oder die Rückmeldung wird nur einen Abschnitt der Karte hervorheben). – pingo

Verwandte Themen