如何禁用特定视图内的滚动?

Posted

技术标签:

【中文标题】如何禁用特定视图内的滚动?【英文标题】:How to disable scroll inside a particular view? 【发布时间】:2021-11-23 15:33:21 【问题描述】:

我试图让 ScrollView 仅在滑动特定视图时水平滚动 像这样:

<ScrollView horizontal=true>
 <View style=styles.TopView></View>
 <View style=styles.BottomView Scrollable=false></View>
</ScrollView>

我正在考虑使用这样的钩子禁用滚动 OnPressIn:

const [Scrollmove, setScrollmove] = useState(true);

    <ScrollView horizontal=true scrollEnabled =Scrollmove>
     <View style=styles.TopView></View>
     <Pressable 
       onPressIn=()=>setScrollmove(false) 
       onPressOut=()=>setScrollmove(true)>
       <View style=styles.BottomView></View>
     </Pressable>
    </ScrollView>

但我不知道它是否会起作用,有没有更好的方法来达到预期的效果?

注意:我上面写的代码段是伪代码

【问题讨论】:

【参考方案1】:

你不能那样做。但是,您可以更改您的设计,例如,划分屏幕,一半可以滚动,另一半可以保留。

<View style=styles.TopView>
   <Text>Stay</Text>
</View>
<ScrollView horizontal=true>
 <View style=styles.BottomView Scrollable=false>
 <Text>Scrollable</Text>
</View>
</ScrollView>

【讨论】:

其实我需要两个视图同时滚动,但只有顶部的视图控制滚动本身

以上是关于如何禁用特定视图内的滚动?的主要内容,如果未能解决你的问题,请参考以下文章

禁用 UIScrollView 手势

滚动视图内的pageviewcontroller内的iOS tableview

UIScrollView 内的 UIWebView 并滚动到 Web 视图中的选定字段

如何禁用滚动视图子视图的点击手势?

IOS:在 IOS 中禁用超级视图的滚动

在滚动视图中特定滚动后停止滚动 - Titanium