[英]How do I track the currently-touched element while the touch point moves between multiple touchable elements?
我有一个这样的用户界面:
<Container>
<Box id="a" />
<Box id="b" />
<Box id="c" />
</Container>
<Text>You are touching: {touchedBoxId}</Text>
______________
|container |
| __ __ __ |
| |a ||b ||c | | You are touching: a
| |__||__||__| |
|______________|
我想更新You are touching: a
不同元素时的文本。 具体来说,我想支持这种用法:
a/b/c
框a/b/c
,更新文本 我尝试向每个框添加onPressIn
处理程序。 这适用于点击单个框。 但是,如果我在框之间移动手指,则不会调用其他框的onPressIn
处理程序。 换句话说,在另一个盒子观察到触摸事件之前,我必须抬起我的手指。
我之前通过将PanResponder
处理程序添加到Container
并根据移动事件的坐标确定触摸了哪个框来实现这一点。 这种方法很麻烦,我认为有一种更简单的方法来实现所需的行为。
如果重要的话,容器实际上是一个react-native-svg
Svg
元素,而框a/b/c
是真正的 SVG Rect
元素。
我该如何实施?
使用 onResponderMove(event,gestureState),同时触摸 svg 元素A
并将手指移动到元素B
。 我们可以直接处理元素A
而不是B
。 在onResponderMove
,使用(event.nativeEvent.locationX >= Bx && event.nativeEvent.locationX <= (Bx + b.width) && event.nativeEvent.locationY >= By && event.nativeEvent.locationY <= (By + B.height))
如果您找到了更好的方法来完成上述操作,请告诉我。 或者使用 react-native-gesture-handler 中的 PanGestureHandler。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.