2016-08-08 115 views
0

Ich habe einen seltsamen Bug in meinem React Native Android Projekt.Button würde nicht reagieren, bis ich es mehrmals in React Native drücken

Es gibt eine Mediensteuerung Seite, wo der individuellen Audio-Player implementiert wird (mit Play/Pause, Weiter, Zurück Tasten usw.), und es funktioniert gut auf Android Simulatoren, aber wenn ich versuchen Sie, auf irgendwelche Knöpfe davon auf dem realen Gerät zu klicken, es reagiert einfach nicht, bis ich es wie 10mal drücke.

Mehrere Ursachen ich mich vorstellen kann:

  • Die ganze Seite reagiert auf eine Pfanne Geste, so auf dem Simulator, ein Klick-Ereignis als einen Klick erkannt wird, aber auf dem Gerät, erkennt er sich als eine Schwenkgeste.

  • Ich bekomme rund 1.000 Warnungen von Warning: You are manually calling a React.PropTypes validation function... (von denen Lösung this answer sein könnte), und es könnte mit der Leistung der App spielen.   (Dieses Problem wird behoben, aber es passiert immer noch)

  • Es gibt ein paar Bibliotheken in der App verwendet, die für iOS implementiert nur sind wie react-native-streamingkit und react-native-mpremotecommandcenter, und einer von ihnen die verursacht werden könnten, Problem.

Bin ich es richtig? Könnte ein anderer Grund das Problem verursachen?

Antwort

0

Ich reparierte den Fehler - der Grund war # 1 unter den, die ich aufgeführt habe.

Die onMoveShouldSetPanResponderCapture() Funktion in einem meiner PanResponder s diesen Code enthalten:

onMoveShouldSetPanResponderCapture: (evt, gestureState) => { 
    return dx != 0 && dy != 0 && this._canPan; 
} 

Mit anderen Worten wurde der Code die Schwelle zur Unterscheidung zwischen einer Tippgeste und Pan Geste Null Einstellung!

habe ich es wie folgt und es funktioniert jetzt schön:

onMoveShouldSetPanResponderCapture: (evt, gestureState) => { 
    return (Math.abs(gestureState.dx) > 5 || Math.abs(gestureState.dy) > 5) && this._canPan; 
} 

die Schwelle 10px gesetzt, wenn Sie möchten.