我正在为一个项目创建一个小小的twitter墙,并经历了一个奇怪的问题。我有以下意见:
<Animated.View style={[{flex: 1}, {marginBottom: this.bottomOffset}]}>
<FlatList
...
keyboardDismissMode="on-drag"
keyboardShouldPersistTaps="always"
... />
<View style={{
flexDirection: "row",
alignItems: "center",
minHeight: 44,
backgroundColor: "#cccccc"}}>
<Octicons />
<TextInput
enablesReturnKeyAutomatically={true}
multiline={true}
onChangeText={(text) => this.setState({text: text})}
value={this.state.text}
/>
<Octicons
name="diff-renamed"
backgroundColor="transparent"
color="black"
style={styles.icon}
size={24}
onPress={this._handlePost}
/>
</View>
</Animated.View>哪里
_handlePost = (e) => {
// todo: networking
this.setState({
text: ""
});
}为了简单起见,我已经缩短了代码的某些部分,并使代码具有可读性。
问题是,当TextInput有焦点时,没有其他可触摸的接收onPress事件。一旦TextInput失去焦点,所有其他组件都会接收onPress事件。
只是想了解一下:一旦回调onPress (在我的例子中是_handlePost被调用),就会清除该。
见视频。
我可能做错了什么?
发布于 2018-07-12 15:30:20
您是否尝试通过将父容器声明为ScrollView来持久化父容器上的点击事件,例如:
<Animated.ScrollView
style={[{flex: 1}, {marginBottom: this.bottomOffset}]}
keyboardShouldPersistTaps={'always'}
>
...
<View style={{
flexDirection: "row",
alignItems: "center",
minHeight: 44,
backgroundColor: "#cccccc"}}
>
...
</View>
...
</Animated.ScrollView>发布于 2018-07-12 15:37:12
我想你是从react本地矢量图标或世园会导入八进制,对吗?如果是这样的话,他们不支持onPress方法(至少根据文档)。试着用触手包起来。
https://stackoverflow.com/questions/51309097
复制相似问题