React-Native: «onBlur» не срабатывает при касании стороны TextInput - PullRequest
0 голосов
/ 25 января 2020
   <TextInput
        ref={ ref => this.mobileNumberRef = ref}
        keyboardType='phone-pad'
        returnKeyType='done'
        onBlur={() => Keyboard.dismiss()}
   />

Я хотел бы убрать клавиатуру при касании за пределами области TextInput. Но onBlur() не увольняют.

Кто-нибудь может дать мне знать, как этого добиться? Благодарю вас!

Ответы [ 2 ]

1 голос
/ 25 января 2020

Прежде всего onBlur вызывается, когда ввод текста размыт. Но если вы хотите отклонить клавиатуру, когда вы касались за пределами области TextInput, используемой ниже сценария ios

<ScrollView keyboardShouldPersistTaps="handled">
  <TextInput
    onChangeText={this.onChangeText}
    keyboardType="phone-pad"
    returnKeyType="done"
  />
</ScrollView>

или

<TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>
  <View style={{ flex: 1, backgroundColor: "#fff" }}>
    <TextInput
      onChangeText={this.onChangeText}
      keyboardType="phone-pad"
      returnKeyType="done"
    />
  </View>
</TouchableWithoutFeedback>

Надеюсь, это поможет вам. Не стесняйтесь сомнений.

1 голос
/ 25 января 2020

onBlur происходит, когда вход теряет фокус.

Keyboard.Dismiss Отклоняет активную клавиатуру и удаляет фокус.

При касании за пределами TextInput вы все равно потеряете фокус от элемента, поэтому я не уверен, почему тебе тоже нужно Keyboard.Dimiss.

Я также проверил это на песочнице, и у меня все работает нормально. Может быть, вы можете поделиться большим кодом и объяснить, чего именно вы хотите достичь?

Наконец, отметьте Расфокусируйте TextInput в React Native Возможно, это поможет вам решить вашу проблему.

...