react-native中的触摸事件

移动应用上的用户交互基本靠“摸”。当然,“摸”也是有各种姿势的:在一个按钮上点击,在一个列表上滑动,
或是在一个地图上缩放。React Native 提供了可以处理常见触摸手势(例如点击或滑动)的组件, 以及可用于识别更复杂的手势的完整的手势响应系统。

再试试下面这个使用Button的例子吧。你可以点击"Tap to Play"来预览真实效果。
(下面会显示一个嵌在网页中的手机模拟器,国内用户可能打不开这个网页模拟器,或速度非常慢)。

import React, { Component } from 'react';
import { Alert, AppRegistry, Button, StyleSheet, View } from 'react-native';

export default class ButtonBasics extends Component {
  _onPressButton() {
    Alert.alert('You tapped the button!')
  }

  render() {
    return (
      <View style={styles.container}>
        <View style={styles.buttonContainer}>
          <Button
            onPress={this._onPressButton}
            title="Press Me"
          />
        </View>
        <View style={styles.buttonContainer}>
          <Button
            onPress={this._onPressButton}
            title="Press Me"
            color="#841584"
          />
        </View>
        <View style={styles.alternativeLayoutButtonContainer}>
          <Button
            onPress={this._onPressButton}
            title="This looks great!"
          />
          <Button
            onPress={this._onPressButton}
            title="OK!"
            color="#841584"
          />
        </View>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
   flex: 1,
   justifyContent: 'center',
  },
  buttonContainer: {
    margin: 20
  },
  alternativeLayoutButtonContainer: {
    margin: 20,
    flexDirection: 'row',
    justifyContent: 'space-between'
  }
})

// skip this line if using Create React Native App
AppRegistry.registerComponent('AwesomeProject', () => ButtonBasics);

1037363-20190402144457358-2115571378.png
1037363-20190402144507980-955377399.png

如果你想在处理点击事件的同时不显示任何视觉反馈,则需要使用TouchableWithoutFeedback。

某些场景中你可能需要检测用户是否进行了长按操作。可以在上面列出的任意组件中使用onLongPress属性来实现
1037363-20190402145619020-1435945916.png

import React, { Component } from 'react';
import { Alert, AppRegistry, Platform, StyleSheet, Text, TouchableHighlight, TouchableOpacity, TouchableNativeFeedback, TouchableWithoutFeedback, View } from 'react-native';

export default class Touchables extends Component {
  _onPressButton() {
    Alert.alert('You tapped the button!')
  }

  _onLongPressButton() {
    Alert.alert('You long-pressed the button!')
  }


  render() {
    return (
      <View style={styles.container}>
        <TouchableHighlight onPress={this._onPressButton} underlayColor="white">
          <View style={styles.button}>
            <Text style={styles.buttonText}>TouchableHighlight</Text>
          </View>
        </TouchableHighlight>
        <TouchableOpacity onPress={this._onPressButton}>
          <View style={styles.button}>
            <Text style={styles.buttonText}>TouchableOpacity</Text>
          </View>
        </TouchableOpacity>
        <TouchableNativeFeedback
            onPress={this._onPressButton}
            background={Platform.OS === 'android' ? TouchableNativeFeedback.SelectableBackground() : ''}>
          <View style={styles.button}>
            <Text style={styles.buttonText}>TouchableNativeFeedback</Text>
          </View>
        </TouchableNativeFeedback>
        <TouchableWithoutFeedback
            onPress={this._onPressButton}
            >
          <View style={styles.button}>
            <Text style={styles.buttonText}>TouchableWithoutFeedback</Text>
          </View>
        </TouchableWithoutFeedback>
        <TouchableHighlight onPress={this._onPressButton} onLongPress={this._onLongPressButton} underlayColor="yellow">
          <View style={styles.button}>
            <Text style={styles.buttonText}>Touchable with Long Press</Text>
          </View>
        </TouchableHighlight>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    paddingTop: 60,
    alignItems: 'center'
  },
  button: {
    marginBottom: 30,
    width: 260,
    alignItems: 'center',
    backgroundColor: '#2196F3'
  },
  buttonText: {
    padding: 20,
    color: 'white'
  }
})

具体使用哪种组件,取决于你希望给用户什么样的视觉反馈:

一般来说,你可以使用TouchableHighlight来制作按钮或者链接。注意此组件的背景会在用户手指按下时变暗。

在 Android 上还可以使用TouchableNativeFeedback,它会在用户手指按下时形成类似墨水涟漪的视觉效果。

TouchableOpacity会在用户手指按下时降低按钮的透明度,而不会改变背景的颜色。

如果你想在处理点击事件的同时不显示任何视觉反馈,则需要使用TouchableWithoutFeedback。

某些场景中你可能需要检测用户是否进行了长按操作。可以在上面列出的任意组件中使用onLongPress属性来实现。

转载于:https://www.cnblogs.com/smart-girl/p/10642662.html

React Native 是一种基于 React 构建的开源框架,用于构建跨平台移动应用(支持 iOS 和 Android)。它允许开发者使用 JavaScriptReact 来编写原生应用界面组件,这使得开发过程更加高效并能共享代码库。 ### 基本概念 #### 组件 React Native 应用由一系列可重用的组件组成,每个组件代表 UI 的一个部分。组件通过属性(props)传递参数给子组件,而状态(state)则用来存储组件内部的数据,可以根据状态变化来更新UI。 #### 生命周期 React Native 组件拥有生命周期方法,类似于 React.js,在创建、渲染、更新、卸载时触发相应的回调函数,如 `componentDidMount`、`componentWillReceiveProps`、`shouldComponentUpdate`、`componentDidUpdate` 和 `componentWillUnmount`。 #### 样式 样式可以通过自定义 StyleSheet 对象实现,也可以使用 CSS-in-JS 方法,如 styled-components 或者 react-native-styled-components。 ### 示例 - 创建简单的按钮 下面是一个简单的 React Native 示例,展示了如何创建一个按钮组件: ```javascript import React from 'react'; import { Button } from 'react-native'; const App = () => { return ( <Button title="点击我" onPress={() => console.log('Button clicked!')} // 可以在这里添加事件监听逻辑 /> ); }; export default App; ``` 在这个例子,我们导入了 `Button` 组件来自 `react-native` 模块,并将其放置在一个根元素内。当用户点击按钮时,控制台会打印 "Button clicked!"。 ### 如何开始使用 React Native 1. **安装环境**:首先,确保已安装 Node.js 和 npm。然后,使用 `create-react-native-app` 或 `expo init` 命令来创建一个新的 React Native 项目。 ```bash npx create-react-native-app your-project-name ``` 2. **运行应用程序**:在项目目录启动开发服务器并查看应用: ```bash cd your-project-name npm start ``` 3. **打开模拟器或连接设备**:通过 `adb`(Android)或 `ios` 命令来启动默认的 Android/iOS 模拟器或连接物理设备。 4. **开发和调试**:编辑 `.js` 文件并在设备上实时预览更改。 ### 相关问题: 1. 如何在 React Native 处理触摸事件? 2. React Native 怎样集成第三方库? 3. 如何利用 React Native 开发跨平台桌面应用?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值