[fix] View event handling

Fix #238
This commit is contained in:
Nicolas Gallagher
2016-10-27 21:00:17 -07:00
parent 0af6dc00fc
commit 14072c7471
2 changed files with 4 additions and 5 deletions

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { storiesOf, action } from '@kadira/storybook';
import { ScrollView, StyleSheet, Text, View } from 'react-native'
import { ScrollView, StyleSheet, Text, TouchableHighlight, View } from 'react-native'
storiesOf('component: ScrollView', module)
.add('vertical', () => (
@@ -13,7 +13,7 @@ storiesOf('component: ScrollView', module)
>
{Array.from({ length: 50 }).map((item, i) => (
<View key={i} style={styles.box}>
<Text>{i}</Text>
<TouchableHighlight onPress={() => {}}><Text>{i}</Text></TouchableHighlight>
</View>
))}
</ScrollView>
@@ -39,7 +39,6 @@ storiesOf('component: ScrollView', module)
const styles = StyleSheet.create({
box: {
alignItems: 'center',
flexGrow: 1,
justifyContent: 'center',
borderWidth: 1

View File

@@ -124,10 +124,10 @@ class View extends Component {
_normalizeEventForHandler(handler, handlerName) {
// Browsers fire mouse events after touch events. This causes the
// ResponderEvents and their handlers to fire twice for Touchables.
// 'onResponderRelease' handler to be called twice for Touchables.
// Auto-fix this issue by calling 'preventDefault' to cancel the mouse
// events.
const shouldCancelEvent = handlerName.indexOf('onResponder') === 0;
const shouldCancelEvent = handlerName === 'onResponderRelease';
return (e) => {
e.nativeEvent = normalizeNativeEvent(e.nativeEvent);