2015-12-15 7 views
9

Ich arbeite gerade an einer Suchkomponente, die aus einem TextInput und einem ListView besteht. Es lädt seine Ergebnisse von einem externen Server und füllt den ListView entsprechend.TouchableOpacity als Element in ListView reagiert nur, nachdem TextInput den Fokus verloren hat

Es gibt auch eine TouchableOpacity, die die Suchkomponente schließt.

Leider dauert es zwei Mal, bis der OnPress Callback der TouchableOpacity aufgerufen wird - eine um den TextInput zu verlieren und eine um den Callback auszulösen. Aber wenn ich die TouchableOpacity drücke, um die Suchkomponente zu schließen oder wenn ich eine der Registerkarten der "reactive-native-scrollable-tab-view" Komponente drücke, reagiert sie sofort und der TextInput behält sogar seinen Fokus.

Also, ich frage mich, ob jemand weiß, ob das ListView irgendwie die Berührungen aufgrund seiner Scroll-Funktionen verbraucht.

Antwort

23

Ok, während ich meinen Post schrieb, überprüfte ich bereits die Docs für ListView und es stellte sich heraus, dass ich von der richtigen Spur war.

Es gibt ein propery keyboardShouldPersistTaps genannt ist:

Wenn falsch, Klopfen außerhalb der fokussierten Texteingabe, wenn die Tastatur nach oben ist entlässt die Tastatur. Wenn dies der Fall ist, fängt die Bildlaufansicht keine Taps ab und die Tastatur wird nicht automatisch ausgeblendet. Der Standardwert ist false.

Ich setze diese Eigenschaft auf True und es funktioniert wie erwartet. =)

+0

Dieser arbeitete für mich! Danke @webwelten – rmevans9

+0

Funktioniert nicht. Immer wenn sich eine Texteingabe und eine Schaltfläche innerhalb einer scrollView befindet - nachdem Sie Werte in die Texteingabe eingegeben haben, müssen Sie die Schaltfläche zweimal drücken, damit sie funktioniert. Eine für den Fokusverlust auf den textInput und die zweite für den Button. Irgendwelche anderen Lösungen? –

+2

Entschuldigung. Funktioniert auch mit scrollView. Ich habe diese Eigenschaft in der scrollView der untergeordneten Komponente angewendet. Als ich mich auf die Elternkomponente beworben habe, habe ich angefangen zu arbeiten. –

1

Verwenden von 'True' oder 'False' für 'keyboardShouldPresistTaps' ist entzogen. Verwenden Sie stattdessen die folgende:

nie‘ (Standard): außerhalb der fokussierten Texteingabe tippen, wenn die Tastatur der Tastatur ist bis entlässt. Wenn dies geschieht, erhalten Kinder den Wasserhahn nicht.

'immer': Die Tastatur wird nicht automatisch ausgeblendet, und die Bildlaufansicht fängt keine Taps ab, aber Kinder der Bildlaufansicht können Taps erfassen.

'gehandhabt': Die Tastatur wird nicht automatisch geschlossen, wenn die Berührung von einem Kind behandelt wurde (oder von einem Vorfahren erfasst wurde).

false: veraltet, verwenden Sie stattdessen 'never'.

wahr: veraltet, verwenden Sie 'immer' statt

Verwandte Themen