【问题标题】:TouchableHighlight won't accept press events while keyboard is openTouchableHighlight 在键盘打开时不接受按下事件
【发布时间】:2015-08-28 21:54:31
【问题描述】:

我有一个并排包含 TextInput 和 TouchableHighlight 的组件。您点击文本框,输入您想要的内容,然后点击添加按钮以保存它。现在的问题是键盘从打字打开,你需要关闭它,否则按钮不会响应。如果我先点击按钮,键盘就会关闭,然后再点击一次。我觉得我应该能够同时做到这两点。这是我的渲染组件:

class FormInput extends Component {
  constructor(props) {
    super(props);
    this.state = {
      text: null
    };
  }
  componentDidMount() {
    this.refs.textInput.focus();
  }

  _changeTextEvent(event) {
    this.setState({
      text: event.nativeEvent.text
    });
  }

  render() {
    var style = [styles.textBox];
    if (this.props.errors.length > 0) {
      style.push(styles.errorTextBox);
    }
    var errors = null;
    if (this.props.errors.length > 0) {
      errors = this.props.errors.map((msg) => {
        return (<Text style={styles.errorLabel}>{msg}</Text>);
      });
    }
    return (
      <View>
        <View style={styles.container}>
          <TextInput
            ref='textInput'
            style={style}
            onChange={this._changeTextEvent.bind(this)}
            autoFocus={true}
          />
          <TouchableHighlight underlayColor="#96DBFF" style={styles.addButton} onPress={() => { this.props.pressEvent(this.state.text) }}>
            <Text style={styles.addButtonText}>Add</Text>
          </TouchableHighlight>
        </View>
        <View>{errors}</View>
      </View>
    );
  }
}

【问题讨论】:

  • 我遇到了同样的问题。如果我找到修复程序,我会更新。

标签: javascript reactjs react-native


【解决方案1】:

请参阅有关在文本字段上调用 ​​blur 以将其关闭的讨论:

https://github.com/facebook/react-native/issues/113

另外,我刚刚在模拟器上对此进行了测试,即使 TextInput 具有焦点且键盘已启动,TouchableHighlight 也确实会做出响应。通过添加如下代码:

pressEvent() {
    this.refs.textInput.blur();
}

我可以通过 TouchableHighlight 关闭键盘。

【讨论】:

  • 感谢您的回复。我调整了我的 TouchableHighlight onPress 事件以在组件上使用一个方法:_pressEvent() { this.refs.textInput.blur(); this.props.pressEvent(this.state.text); } 但它不起作用。如果我在这里的方法上放置一个断点,它直到键盘关闭后才会触发。是否有其他东西正在捕捉该事件?
  • 该组件在 ScrollView 中呈现。在滚动视图文档中,它确实说“尚不支持其他包含的响应者阻止此滚动视图成为响应者。”
  • 是的,我将表单组件移到滚动视图之外,按钮现在响应。
  • ScrollView 有一个现在称为keyboardshouldpersisttaps 的选项,请查看facebook.github.io/react-native/docs/…
猜你喜欢
  • 1970-01-01
  • 2012-06-04
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多