es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ReactNative ScrollView Anidado Horizontalmente (anidado dos veces)

La estructura de vista a continuación:

<scrollview horizontal="" pagingenabled="">
    <view key="{1}/">
    <view key="{2}">
        <scrollview horizontal="{false}" pagingenabled="">
            <view key="{'2-0'}">
                <scrollview horizontal="" pagingenabled="">{subvistas aquí}</scrollview>
            </view>
            <view key="{'2-1'}/">
            <view key="{'2-2'}/">
        </view></view></scrollview>
    </view>
    <view key="{3}/">
</view></view></scrollview>

El problema es que, cuando me desplazo hacia la vista [key:2], y su subvista es la vista [key:’2-0′] en este momento, entonces el ScrollView anidado en la vista [key:’2-0′] tomará el control de la respuesta al gesto, y nunca tendré la oportunidad de deslizarme horizontalmente hacia la vista [key:3] o volver a la vista [key:1]. He intentado establecer onMoveShouldSetResponderCapture al ScrollView exterior para tomar el control de la respuesta al gesto mientras el ScrollView interior está en el borde. Solo funcionará cuando deslice lentamente.
¿Hay alguna manera de hacer que esto funcione de forma natural?
gracias, chicos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema en esta estructura de vista es que la ScrollView anidada toma el control del responder de gestos y evita que la ScrollView externa funcione de manera natural. Para que esto funcione sin problemas, podemos intentar implementar la siguiente solución:

    1. Agregar una propiedad llamada nestedScrollEnabled a la ScrollView externa y establecerla en true. Esto permite que la ScrollView anidada utilice su propio responder de gestos sin interferir con la ScrollView externa.
    2. Establecer la propiedad scrollEnabled de la ScrollView anidada en false. Esto deshabilita el desplazamiento de la ScrollView anidada cuando intentamos deslizar horizontalmente para ver[key:3] o volver a ver[key:1] desde view[key:2].

    3. Implementar una función llamada onScroll en la ScrollView externa. Esta función se activará cada vez que el usuario desplace la ScrollView externa. Dentro de esta función, verificamos si la página actual es view[key:2] y su subvista es view[key:’2-0′]. Si es así, habilitamos el desplazamiento de la ScrollView anidada estableciendo su propiedad scrollEnabled en true. De lo contrario, deshabilitamos el desplazamiento de la ScrollView anidada estableciendo su propiedad scrollEnabled en false.

    Al implementar estos cambios, el usuario puede deslizar horizontalmente para llegar a view[key:3] o volver a view[key:1] desde view[key:2] sin ningún problema.

Comments are closed.