我在console.log
的{{1}},onScrollBeginDrag
和onScroll
中有一些简单的onScrollEndDrag
语句。我可以看到它们在我的iOS设备上可以正常运行,但是在Android模拟器上却无法运行。
这引发了一个问题,这些道具仅在iOS上受支持,还是Android模拟器有问题?
代码很简单:
ScrollView
答案 0 :(得分:0)
我在FlatList中使用onScrollBeginDrag
,本机反应为0.59.9,正如您所说的,它不能在android模拟器上运行(已在genymotion和android 7上进行了测试)。
它确实可以在运行android 8的智能手机上运行,所以有一种使用它的方法...
答案 1 :(得分:0)
是的,它们受支持,但是存在问题...
我假设您使用<FlatList />
来渲染组件,对吗?
如果是这样,则您的问题很可能是由<View />
包含您的<FlatList />
项目所组成的,这些项目已被Android优化。 Android会自动删除实际上不会呈现任何内容(例如背景色或边框)的“包装”视图。这种优化有助于减少视图层次结构的深度,但在某些情况下(例如这种情况)可能会导致意外结果...
我在商品的包装backgroundColor
中添加了透明的<View />
,现在在{{的onScrollBeginDrag
,onScrollEndDrag
和onScroll
事件中添加了透明的<FlatList />
1}}正在按预期射击!
<FlatList
onScrollBeginDrag={() => console.log('begin')}
onScrollEndDrag={() => console.log('end')}
onScroll={() => console.log('end')}
data={[{key: 'a'}, {key: 'b'}]}
renderItem={({ item }) => (
<View style={{ backgroundColor: 'transparent' }}>
<Text>{item.key}</Text>
</View>
)}
/>
我还删除了FlatList填充,并在包装视图中添加了一些填充,这使可触摸区域更大。
PS:对Bartol Karuza表示敬意。