React native TextInput阻止ScrollView滚动
我有一个比手机屏幕高的表格。它是一个React native TextInput阻止ScrollView滚动,react-native,react-native-android,react-native-scrollview,React Native,React Native Android,React Native Scrollview,我有一个比手机屏幕高的表格。它是一个滚动视图,包含文本输入组件。问题是,当我想在文本输入上拖动开始触摸时,滚动视图不会移动。如果我在空白处拖动start(代码示例中的视图),它会完美地滚动 这感觉就像TextInput以某种方式吞噬了触摸/拖动事件,而不允许ScrollView交互 ScrollView与此类似: function Form() { return ( <ScrollView style={{ flex: 1, }}> &
滚动视图
,包含文本输入
组件。问题是,当我想在文本输入
上拖动开始触摸时,滚动视图
不会移动。如果我在空白处拖动start(代码示例中的视图
),它会完美地滚动
这感觉就像TextInput
以某种方式吞噬了触摸/拖动事件,而不允许ScrollView
交互
ScrollView
与此类似:
function Form() {
return (
<ScrollView style={{ flex: 1, }}>
<TextInput placeholder="test" />
<TextInput placeholder="test" />
<TextInput placeholder="test" />
<TextInput placeholder="test" />
<TextInput placeholder="test" />
<View style={{ height: 150, }} />
<TextInput placeholder="test" />
<TextInput placeholder="test" />
<TextInput placeholder="test" />
<TextInput placeholder="test" />
</ScrollView>
);
}
函数形式(){
返回(
);
}
我怎样才能使滚动工作
<强>更新< /强>:我注意到当我开始在空白空间滚动时,我可以通过触摸输入来滚动。然而,一旦惯性停止,我就无法再次使用输入进行滚动。
更新:这可能会有帮助- 可能是包裹在
周围的缺少的
吗
我尝试了这个,它从内部视图和TextInput组件都可以正常滚动:
render() {
return (
<View style={{ flex: 1 }}>
<ScrollView style={{ flex: 1 }} >
<TextInput placeholder="this is a textinput with height 200" style={{ borderColor: 'brown', borderWidth: 1, height: 200 }} />
<TextInput placeholder="this is a textinput with height 1200" style={{ borderColor: 'brown', borderWidth: 1, height: 1200 }} />
<View style={{ height: 150, backgroundColor: 'khaki' }} />
<TextInput placeholder="this is a textinput with height 200" style={{ borderColor: 'brown', borderWidth: 1, height: 200 }} />
</ScrollView>
</View>
);
}
render(){
返回(
);
}
但是,既然您说它在从视图组件拖动时会滚动,那么共享整个代码可能会显示出一些问题,所以看起来这是0.32版本的React Native library中的一个bug。滚动按0.33中的预期工作。这一问题由解决。面临同样的问题。事实证明,只有当
TextInput
组件被赋予隐式height
样式时,才会出现这种情况,这会迫使组件向下收缩,并开始捕获滚动事件。我删除了它,并通过fontSize
和padding
管理了我的TextInput
大小,它为我解决了这个问题。虽然这是一个老问题,但我也遇到了同样的问题,没有找到公共解决办法
在我的例子中,原因是TextInput
height
style属性未明确设置。没有它(或设置了flex:1
时,不管怎样),输入字段的实际高度可能会略小于其文本的高度,迫使文本垂直滚动(即使多行
样式为假
,滚动启用
为假
,等等)
因此,我的解决方案是显式设置最小的高度
值,以使整个文本适合。如此处所述:textAlign=“center”
导致此问题
使用
style={{textAlign:“center”}添加multiline={true}
可以解决问题。谢谢,但是添加视图
没有帮助。在0.39.2中也有同样的问题。如果可以,请尝试升级到最新版本。您落后了十个版本:/text输入中仍有一个可见的滚动,它本身仍在react native:0.47.2
中出现,仍在react native:0.60
中出现,如下所述:text输入防止滚动查看#25594 textAlign=“center”导致此问题。