- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已实现 PanResponder 在我的项目中,但它仅在我触摸不可触摸元素时才有效。当我触摸像 这样的可触摸元素时TouchableOpacity , PanReponder 没有响应。但是当我将手指移到 上时TouchableOpacity PanResponder 响应。
Same thing happening for Button also
import React, { Component } from 'react';
import { Button, PanResponder, View, StyleSheet,TouchableOpacity } from 'react-native';
import { Constants } from 'expo';
export default class App extends Component {
state = {
show : false
};
_panResponder = {};
componentWillMount() {
this._panResponder = PanResponder.create({
onStartShouldSetPanResponder: () => {
alert('clicked')
console.log('clicked')
return true
},
onMoveShouldSetPanResponder: () => {
alert('moved')
console.log('moved')
return true
},
onStartShouldSetPanResponderCapture: () => false,
onMoveShouldSetPanResponderCapture: () => false,
onPanResponderTerminationRequest: () => true,
onShouldBlockNativeResponder: () => false,
});
}
render() {
return (
<View
style={styles.container}
collapsable={false}
{...this._panResponder.panHandlers}>
{/*********************PanResponder does not respond***************************/}
<TouchableOpacity>
<View style={{width:200, height:200,backgroundColor:'red'}}>
</View>
</TouchableOpacity>
<Button
title="Here is a button for some reason"
onPress={() => {}}
/>
{/*****************************************************************************/}
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
paddingTop: Constants.statusBarHeight,
backgroundColor: '#ecf0f1',
}
});
最佳答案
我有一个类似的问题。基本上是因为你总是在 onStartShouldSetPanResponder
中返回 true和/或 onMoveShouldSetPanResponder
他们将接管该触摸事件。
我的解决方法:不要将触摸视为“您的”(PanResponder 的),除非用户先将其移动到您设置的阈值。
const touchThreshold = 20;
const panResponder = PanResponder.create({
onStartShouldSetPanResponder : () => false,
onMoveShouldSetPanResponder : (e, gestureState) => {
const {dx, dy} = gestureState;
return (Math.abs(dx) > touchThreshold) || (Math.abs(dy) > touchThreshold);
},
...
});
关于react-native - 如果我触摸 Touchables(TouchableHighlight、TouchableOpacity、TouchableWithoutFeedback),PanResponder 无法检测到触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44653138/
trigger = () => { console.log('testing'); } render() { return ( ( {it
我如何检测何时释放长按(而不是通过拖动)。 onPressOut 确实说明了它何时被释放,但它也会在手指被拖离按钮时触发。 this.onLongPress()} onPressOut=
我正在努力做到这一点,如果用户点击屏幕上的任何地方,它应该调用我的点击处理程序函数,但到目前为止,所有变体都不起作用。 我的代码: class Story extends Component {
刚刚在实际的 iPhone 上测试了一个简单的 UI,到目前为止我只使用 iOS 模拟器构建了该 UI。事实证明,iPhone 只记录了我对按钮的大约 20% 的触摸,而模拟器可以正常处理 100%
我有一个关闭键盘的组件。然后我用这个组件包裹我的整个组件,这样每当我在 TextInput 外部点击时,键盘就会消失。但问题是,在我的其他组件中,我有一个 Flatlist,它根本不使用 Toucha
请帮我解决我的问题。我有一长串项目,所以我使用的是 ScrollView。但我也有 Input 字段并使用 TouchableWithoutFeedback 使 OnPress 事件关闭键盘,就像那样
我做了一个 DEMO 所以问题是第三个按钮不起作用。按钮之间的唯一区别是我在 Header 组件中传递它们的方式。 Second Button} thirdButton={}
Here's how this part looks using TouchableWithoutFeedback And here is the same thing, except with To
我使用TouchableWithoutFeedback来做一个Button,但是按钮的宽度是屏幕的全宽。 我期望这个按钮: 这些是我的风格: btnDependText: { backgrou
我正在开发一个用于学习目的的简单 React Native 应用程序。我只是迈出了进入 React Native 世界的第一步。但是在这个非常早期的阶段,我遇到了问题。我无法让简单的触摸事件工作。我正
我已实现 PanResponder 在我的项目中,但它仅在我触摸不可触摸元素时才有效。当我触摸像 这样的可触摸元素时TouchableOpacity , PanReponder 没有响应。但是当我将手
我正在尝试让 TouchableWithoutFeedback 包装 ScrollView 工作。 在实际问题中,我无法访问 ScrollView。 Here's a working Expo Sna
我是一名优秀的程序员,十分优秀!