0
votes

Réacteur-natif-vidéo désactive TouchablePacity dans Android

Je travaille sur une application native réagissante qui implique un lecteur vidéo (réacteur-natif-vidéo) et quelques contrôles simples que je mets moi-même. Sur iOS, cela fonctionne bien, mais sur Android, les éléments touchableopacity , que j'utilise pour les contrôles et la navigation, ne semblent pas détecter les touches. (La navigation est des poignées par réact-native-fluide-transitions dans mon application). Lorsque j'allume l'inspecteur, une vue de couverture de l'écran semble être sur mes commandes. Cependant, ce n'est pas le cas sur iOS et je n'ai pas non plus configuré une telle valeur.

J'ai installé Atom pour utiliser la fonction d'inspecteur de son inspecteur pour voir l'ordre réel de mes points de vue. Il semble comme suit:

 Entrez la description de l'image ici

videoView est le nom de mon composant, vidéo est le lecteur vidéo actuel et le touchableopacacité que j'ai mis en évidence est le bouton que j'essaie de vous rendre au travail. Dans cette hiérarchie de vue, aucune vue ne semble être sur n'importe quoi. J'ai également comparé cette panne à d'autres composants où mes boutons fonctionnent réellement et il a l'air identique.

Mon code ressemble à ce qui suit: xxx

où RenderControls est une fonction qui rend le bouton de pause et le rendu est un composant singleton contenant une fonction de rendu contenant des éléments J'utilise dans plus de composants de mon application. Tout cela fonctionne bien sur iOS, mais pas sur Android. React-Native-Video semble être incompatible avec les transitions de fluide réactif-natif, car tout fonctionne lorsque je retire l'une des deux.

Est-ce que quelqu'un sait ce qui pourrait causer ce comportement? Toute aide serait très appréciée.


3 commentaires

Si cela est positionné absolument, cela peut créer des problèmes comme ça. Essayez de définir pour cela plus haut index z.


J'ai jusqu'à un zindex de 6000 qui est beaucoup plus élevé que l'une de mes autres vues peut être. Auriez-vous une autre idée?


Cette vue est créée en réagissant automatiquement de ce que je sais que vous n'avez pas besoin de vous concentrer sur cela. Essayez de remplacer TouchablePacity à un autre touchable et voyez si cela fonctionnera. Sinon, essayez de le déplacer à un autre endroit - si cela fonctionnera, il y a un problème avec quelque chose qui accroche un événement tactile avant de cela.


3 Réponses :


0
votes
import {TouchableOpacity} from 'react-native';

<TouchableOpacity>some text</TouchableOpacity>

4 commentaires

Merci pour votre réponse, mais n'avez pas de difficulté à mettre en œuvre TouchablePacity, car cela fonctionne dans d'autres composants. C'est juste le "contexte" actuel dans lequel il semble être désactivé


Est-ce que cela s'estompe quand on clique?


Non, il ne détecte littéralement pas le contact


Salut! J'ai en fait une mise à jour (voir ma question). J'utilise des transitions de fluide réactive-natif pour les transitions d'éléments partagées et lorsque j'exécute une version précédente de mon application sans que tout fonctionne bien. Ce cadre semble insérer une certaine superposition de ma vue vidéo, qui bloque l'interaction de l'utilisateur. Connaissez-vous cela?



1
votes

Essayez de supprimer le pot d'actifacacité du composant touchablePacity. Ou vous pouvez utiliser le code spécifique de la plate-forme pour définir des valeurs pour Activeopacité ProP

import { Platform, TouchableOpacity } from 'react-native'

    <TouchableOpacity 
      activeOpacity={Platform.OS==='android' ? 0 : 0.2}
      >
      <Text>submit</Text>
    </TouchableOpacity> 


0 commentaires

1
votes

Enveloppez le composant dans une vue et désactivez les événements du pointeur.

<View pointerEvents="none">
  <Video source={{ uri: source }} />
</View>


1 commentaires

Cela a fonctionné pour moi! Je n'ai pas pu reproduire le problème avec une vidéo réactive et touchable. Mais d'une manière ou d'une autre dans mon contexte actuel, il ne faisait que détecter une touche la deuxième fois. Vraiment étrange. Savez-vous pourquoi cela a fonctionné? Je ne sais pas pourquoi ma vidéo détecterait des touches ...