2016-02-22 7 views
11

Mam <TextInput>, które chciałbym przesłać po stuknięciu czerwonego przycisku Post, a mianowicie <TouchableHighlight>. Po włączeniu funkcji TextInput kończę pisanie i stukam przycisk Post, klawiatura się zamyka, ale przycisk nie rejestruje dotknięcia.React Natywne rozmycie TextInput zużywa TouchableHighlight Wydarzenie prasowe

Próbowałem używać zdarzenia TextInput onBlur, ale nie podają mi współrzędnych punktu dotyku, więc nie wiem, czy punkt dotykowy znajduje się nad przyciskiem, czy nie.

screenshot

Odpowiedz

15

Trzeba dodać keyboardShouldPersistTaps property = {true} do Scrollview.

Oto co docs powiedzieć:

keyboardShouldPersistTaps bool:

Kiedy fałszywy, stukając poza skupionej wprowadzania tekstu, gdy klawiatura wynosi Oddala klawiaturę. W przypadku wartości true widok przewijania nie będzie przechwytywać, a klawiatura nie zostanie automatycznie odrzucona. Domyślną wartością jest fałsz.

+0

Nailed to. Dzięki. – frank

+2

Dziękujemy! Btw, ta opcja jest również dostępna dla ListView. – Jeiwan

+0

Nadal nie udało się rozwiązać problemu. Co się stanie, jeśli chcę stuknąć poza polem tekstowym, aby odrzucić klawiaturę? Chcę, aby naciśnięcia przycisku miały najwyższy priorytet, a każde inne kliknięcie poza polem tekstowym powinno odrzucić klawiaturę. – frank

5

@frank, wyobrażam sobie, że znalazł praktycznego rozwiązania, ale w dodatku do „keyboardShouldPersistTaps”, jeśli owinąć swój pogląd w elemencie TouchableWithoutFeedback z onPress że nazywa dismissKeyboard powinno rozwiązać problem.

<ScrollView keyboardShouldPersistTaps={true} ref='scrollView'> 
    <TouchableWithoutFeedback onPress={dismissKeyboard}> 
    <View> 
    -View Content- 
    </View> 
    </TouchableWithoutFeedback> 
</ScrollView> 
Powiązane problemy