反应并按住本机,将手指拖到另一个可触摸的位置,并通过该视图捕获触摸

问题描述

在我的React Native应用程序中,我试图提供一个用户可以长按的按钮,并且不松开手指,使其能够与另一个视图进行交互。这大概是我想要的:

enter image description here

enter image description here

enter image description here

enter image description here

可以想像3D触摸/长按在iOS 13/14之前的工作方式(取决于系统和设备中的位置):用户3D触摸或长按一个按钮,例如应用程序图标和上下文菜单弹出。然后,用户可以不松开手指,将鼠标悬停在其中一个按钮上并松开手指,从而触发按钮点击。

我对按钮,可触摸项和视图有完全的控制权(即使标签栏是自定义的,与上面的插图相反)。

我该如何实现? (我正在使用React Native 0.63)

解决方法

可能有更好的解决方案,但我想使用手势响应器系统

https://reactnative.dev/docs/gesture-responder-system

您可以拥有一个包含标签栏和按钮的单一容器视图。然后收听onResponderMove事件,确定何时应显示这些按钮。例如,当locationY超过某个值时,就会发生这种情况。

您还可以使用onResponderRelease事件(同样在locationX locationY参数的帮助下)确定手指是否在按钮上方释放。