【问题标题】:Enable haptic Feedback on react-native touchable view在 react-native 可触摸视图上启用触觉反馈
【发布时间】:2017-05-03 12:48:44
【问题描述】:

我正在编写一个 react-native 应用程序,并且我注意到虽然按钮在单击时看起来像原生按钮 - 但它们的行为并不像一个(至少不像 android 按钮的行为)。

点击 android 应用按钮 - 发出声音并向用户提供触觉反馈。 在声音上,我看到有 github 讨论和未解决的问题,但我在任何地方都找不到关于触觉反馈的任何信息。

如何使我的视图(任何可触摸的视图..)在点击时产生触觉反馈? 这在应用中是非常重要的感觉。

我想要这样的东西(在 android 中)

View view = findViewById(...)
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);

这不需要应用程序拥有Vibrate 的权限。

我自己使用Vibrate api 管理触觉反馈会导致全局禁用此选项的用户体验不良行为

谢谢

【问题讨论】:

    标签: react-native react-native-android haptic-feedback


    【解决方案1】:

    如果你使用 Expo 和 react-native,我建议你使用 Expo haptics

    安装库后你可以像这样使用它:

    <TouchableOpacity onPress = { ()=> { 
         Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success)
         or
         Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light) 
         or
         Haptics.selectionAsync()
       
     } } > </TouchableOpacity>

    【讨论】:

    • 这段代码放在哪里,和3d touch类似吗?
    【解决方案2】:

    我在github上找到了这个组件https://github.com/charlesvinette/react-native-haptic

    我还没有尝试过,但它应该可以帮助您获得所需的触觉反馈。

    【讨论】:

      【解决方案3】:

      我也有几乎相同的要求,我最终使用了这个库react-native-haptic-feedback

      请记住,触觉反馈仅适用于某些最新的 Android 设备和 iPhone 6s 以上的 iOS。这是一个简单的代码sn-p:

      import ReactNativeHapticFeedback from "react-native-haptic-feedback";
      
      const options = {
        enableVibrateFallback: true,
        ignoreAndroidSystemSettings: false
      };
      
      ReactNativeHapticFeedback.trigger("impactMedium", options);
      

      在您的情况下,它将直接与按钮的 onPress 方法一起使用,例如:

      <TouchableOpacity onPress={()=>{ReactNativeHapticFeedback.trigger("impactMedium", options);}} />
      

      注意:我发现最多设备支持的最通用类型是impactMedium

      【讨论】:

      • 如果有人在任何支持触觉反馈的 iOS 设备上无法从版本 > 0.60 的 React Native 获得任何触觉,只需转到 XCode 文件夹结构中的 React Native 项目目录(在顶部-XCode 的左侧)=> 转到 Build Phases 选项卡(在 XCode 屏幕的顶部中间)=> 下拉链接 BIrary 与库 => 通过单击添加(+ 拖动以重新排序链接的二进制文件)=> 搜索“libRNReactNativeHapticFeedback .a => 添加它。然后停止运行并重新运行您的项目或github.com/junina-de/react-native-haptic-feedback/issues/40
      【解决方案4】:

      我在 Github 上发布了一个提供此功能的项目。 看看这个 repo:react-native-haptic-view

      【讨论】:

        【解决方案5】:

        您可以使用内置的振动模块facebook.github.io/react-native/docs/touchablewithoutfeedback

        import { Vibration } from 'react-native';
        ...
        
        <TouchableWithoutFeedback
          onPressIn={() => Vibration.vibrate()}
        />
        

        记得将它包含在你的 AndroidManifest 中

        <uses-permission android:name="android.permission.VIBRATE" />
        

        【讨论】:

        • 这并没有模仿触觉反馈的感觉。我编辑了我的问题,使其更具体。
        • 触觉反馈不只是点击时的振动吗?是否要改变它所需要的振动参数。
        • 我知道,android 的常量是 Vibration.vibrate(3)。但这意味着我需要自己处理它 - 每个操作系统都不同,另外还要检查用户的 android 全局设置是什么。我原以为这将是 react-native 平台会处理的事情。
        • 权限问题为我解决了问题,谢谢伊万。但是它不适用于iOS。是否可以为 iOS 添加一些权限?
        • 这就是为什么我切换到提供 100% 原生感觉的 nativescript 的原因
        猜你喜欢
        • 1970-01-01
        • 2020-12-10
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        • 2023-03-09
        • 2017-07-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多