Este tutorial describe cómo permitir la interacción táctil con elementos detrás de un frame PNG que ocupa toda la pantalla pero tiene zonas transparentes. La solución utiliza la propiedad pointerEvents para garantizar que los eventos táctiles pasen a través de las áreas transparentes.

Crear un frame decorativo que:
Primero vamos a crear nuestro componente con una imagen superpuesta en este caso con un frame (es un png que ocupa toda la pantalla y representa un borde)
import React, { useRef } from 'react';
import { View, StyleSheet, TouchableOpacity, Text, ImageBackground, ScrollView } from 'react-native';
const App = () => {
const frameImage = require('./assets/frame.png'); // Ruta al PNG del frame
const scrollViewRef = useRef(null);
return (
<View style={styles.container}>
<ImageBackground source={frameImage} style={styles.frame} resizeMode="cover" pointerEvents="none">
<ScrollView
style={styles.scrollContainer}
ref={scrollViewRef}
keyboardShouldPersistTaps="handled"
onContentSizeChange={() => scrollViewRef.current?.scrollToEnd({ animated: true })}>
<View style={styles.content}>
<Text style={styles.text}>¡Interacción debajo del frame!</Text>
<TouchableOpacity style={styles.button} onPress={() => alert('¡Botón presionado!')}>
<Text style={styles.buttonText}>Presióname</Text>
</TouchableOpacity>
</View>
</ScrollView>
</ImageBackground>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f0f0f0',
},
frame: {
flex: 1,
position: 'absolute',
width: '100%',
height: '100%',
},
scrollContainer: {
flex: 1,
},
content: {
padding: 20,
alignItems: 'center',
},
text: {
fontSize: 18,
marginBottom: 20,
},
button: {
backgroundColor: '#6200ee',
paddingVertical: 10,
paddingHorizontal: 20,
borderRadius: 5,
},
buttonText: {
color: '#fff',
fontSize: 16,
},
});
export default App;
ImageBackground:- Usamos
ImageBackgroundpara renderizar el frame PNG como una superposición. - La propiedad
pointerEvents="none"asegura que el frame no intercepte los eventos táctiles, permitiendo que los elementos interactivos debajo sean accesibles.
- Usamos
ScrollView:- Contiene elementos interactivos como texto y botones.
- La referencia
refy el métodoscrollToEndaseguran que el contenido se desplace automáticamente al final si es necesario.
- Botón Interactivo:
- Usamos
TouchableOpacitypara crear un botón con un diseño sencillo. - La acción
onPressdemuestra la funcionalidad interactiva.
- Usamos
Configuración de los Assets
Asegúrate de tener un archivo PNG con bordes decorativos y un centro transparente en tu carpeta assets. Actualiza la ruta en require('./assets/frame.png') según tu estructura de proyecto.
Ahora podrás pulsar los botones sin interferir el frame en ellos.

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.