首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按钮不接收onPress事件,而TextInput是集中的。

按钮不接收onPress事件,而TextInput是集中的。
EN

Stack Overflow用户
提问于 2018-07-12 15:09:40
回答 2查看 212关注 0票数 1

我正在为一个项目创建一个小小的twitter墙,并经历了一个奇怪的问题。我有以下意见:

代码语言:javascript
复制
<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>

哪里

代码语言:javascript
复制
_handlePost = (e) => {
    // todo: networking
    this.setState({
        text: ""
    });
}

为了简单起见,我已经缩短了代码的某些部分,并使代码具有可读性。

问题是,当TextInput有焦点时,没有其他可触摸的接收onPress事件。一旦TextInput失去焦点,所有其他组件都会接收onPress事件。

只是想了解一下:一旦回调onPress (在我的例子中是_handlePost被调用),就会清除该

视频

我可能做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-12 15:30:20

您是否尝试通过将父容器声明为ScrollView来持久化父容器上的点击事件,例如:

代码语言:javascript
复制
<Animated.ScrollView
  style={[{flex: 1}, {marginBottom: this.bottomOffset}]}
  keyboardShouldPersistTaps={'always'}
>
  ...
  <View style={{
    flexDirection: "row", 
    alignItems: "center", 
    minHeight: 44, 
    backgroundColor: "#cccccc"}}
  >
    ...
  </View>
  ...
</Animated.ScrollView>
票数 1
EN

Stack Overflow用户

发布于 2018-07-12 15:37:12

我想你是从react本地矢量图标或世园会导入八进制,对吗?如果是这样的话,他们不支持onPress方法(至少根据文档)。试着用触手包起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51309097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档