Подтвердить что ты не робот

TouchableHighlight не будет принимать события, когда клавиатура открыта

У меня есть компонент, который содержит TextInput и TouchableHighlight рядом. Вы нажимаете на текстовое поле, введите то, что хотите, затем нажмите кнопку добавления, чтобы сохранить его. Теперь проблема в том, что клавиатура открыта от ввода, вам нужно ее отменить, иначе кнопка не ответит. Если я сначала нажимаю кнопку, клавиатура увольняется, тогда работает второй кран. Я чувствую, что должен уметь делать то и другое. Здесь мой компонент render:

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>
    );
  }
}
4b9b3361

Ответ 1

Пожалуйста, просмотрите это обсуждение при вызове blur в текстовом поле, чтобы его отклонить:

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

Кроме того, я просто тестировал это на симуляторе, и TouchableHighlight определенно реагирует, даже когда TextInput имеет фокус и клавиатура вверх. Добавив код, например:

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

Я могу убрать клавиатуру из TouchableHighlight.