跳到主要内容

处理触摸事件

用户主要通过触摸与移动应用进行交互。他们可以使用各种手势,例如点击按钮、滚动列表或缩放地图。React Native 提供了处理所有常见手势的组件,以及一个全面的 手势响应系统,用于更高级的手势识别,但你最可能感兴趣的组件是基本的 Button。

显示基本按钮

Button 提供了一个在所有平台上都能良好渲染的基本按钮组件。显示按钮的最小示例如下

tsx
<Button
onPress={() => {
console.log('You tapped the button!');
}}
title="Press Me"
/>

这将在 iOS 上呈现一个蓝色标签,在 Android 上呈现一个带有浅色文本的蓝色圆角矩形。按下按钮将调用“onPress”函数,在本例中将显示一个警报弹出窗口。如果需要,你可以指定一个“color”属性来更改按钮的颜色。

请通过下面的示例动手尝试 `Button` 组件。你可以通过点击右下角的切换按钮来选择在哪个平台上预览你的应用,然后点击“Tap to Play”来预览应用。

可触摸组件

如果基本按钮不符合你应用的设计,你可以使用 React Native 提供的任何“Touchable”组件来构建自己的按钮。这些组件能够捕获点击手势,并在识别到手势时提供反馈。但是,这些组件不提供任何默认样式,因此你需要做一些工作才能让它们在你应用中看起来美观。

你使用哪个“Touchable”组件取决于你想提供哪种类型的反馈

  • 通常,你可以在任何使用 Web 上的按钮或链接的地方使用 TouchableHighlight。当用户按下按钮时,视图的背景会变暗。

  • 你可以考虑在 Android 上使用 TouchableNativeFeedback 来显示响应用户触摸的水墨涟漪效果。

  • TouchableOpacity 可用于通过降低按钮的透明度来提供反馈,使用户在按下时可以看到背景。

  • 如果你需要处理点击手势但不想显示任何反馈,请使用 TouchableWithoutFeedback

在某些情况下,你可能希望检测用户按住视图一段时间。可以通过将函数传递给任何“Touchable”组件的 `onLongPress` 属性来处理这些长按事件。

让我们看看所有这些是如何工作的

滚动和滑动

在触摸屏设备上常用的手势包括滑动和拖动。这允许用户滚动项目列表或滑动内容页面。对于这些,请查看 ScrollView 核心组件。

已知问题

  • react-native#29308: 触摸区域永不超出父视图边界,并且在 Android 上不支持负边距。