Включить тактильную обратную связь на реагирующем родном сенсорном представлении

Я написал приложение реагировать на родную, и я заметил, что, хотя кнопки выглядят как родные кнопки при нажатии - они не ведут себя как единое целое (При аренде не как кнопки Android ведут себя).

Нажав на кнопку приложения для Android - сделайте звук и дайте пользователю тактильный отзыв. По звуку я увидел, что на github есть обсуждения и открытая тема, но я нигде не смог найти ничего о тактильной обратной связи.

Как я могу сделать мой взгляд (любой осязательный взгляд...), чтобы сделать тактильный отзыв при нажатии? Это действительно важное чувство в приложении.

Я хочу что-то вроде этого (в Android)

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

Это не требует от приложения иметь разрешение на Vibrate,

И управлять тактильной обратной связью самостоятельно с Vibrate API приведет к тому, что пользователи, которые отключат эту опцию во всем мире, будут испытывать плохое поведение

Спасибо

2 ответа

Я рекомендую вам использовать Expo haptics

После установки библиотеки вы можете использовать ее так:

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

Вы можете использовать встроенный модуль вибрации https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html

import { Vibration } from 'react-native';
...

<Touchable
  onPressIn={() => Vibration.vibrate()}
/>

Не забудьте включить это в свой AndroidManifest

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

Я нашел этот компонент на github https://github.com/charlesvinette/react-native-haptic

Я еще не пробовал, но это должно помочь вам получить тактильные отзывы, которые вы хотите.

У меня также почти такие же требования, и в итоге я использовал эту библиотеку response-native-haptic-feedback.

Имейте в виду, что тактильная обратная связь доступна только на некоторых последних устройствах Android и в iOS выше iPhone 6s. Вот простой фрагмент кода:

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.

Я опубликовал проект на Github, который предоставляет эту функциональность. Проверьте это репо: Reaction-native-haptic-view

Другие вопросы по тегам