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

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

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

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

Я хочу что-то подобное (в андроиде)

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

Для этого не требуется, чтобы приложение имело разрешение на Vibrate.

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

Спасибо


person Nadav Nagel    schedule 03.05.2017    source источник


Ответы (5)


Если вы используете Expo с react-native, я рекомендую вам использовать Expo haptics

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

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

person A.r. Basith    schedule 28.07.2019
comment
куда поставить этот код и похож ли он на 3d touch? - person Rami Salim; 29.07.2020


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

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

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

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

<uses-permission android:name="android.permission.VIBRATE" />
person Ivan Wu    schedule 03.05.2017
comment
Это не имитирует тактильную обратную связь. Я отредактировал свой вопрос, чтобы он был более конкретным. - person Nadav Nagel; 04.05.2017
comment
Разве тактильная обратная связь - это не просто вибрация при нажатии? Если вы хотите изменить вибрацию, она принимает параметры. - person Ivan Wu; 04.05.2017
comment
Знаю, а константа для андроида - Vibration.vibrate (3). Но это означает, что мне нужно справиться с этим самостоятельно - по-разному для каждой ОС, а также для проверки глобальных настроек пользователя android. Я бы подумал, что это будет то, о чем позаботится реагирующая платформа. - person Nadav Nagel; 05.05.2017
comment
За меня все исправили, спасибо, Иван. Однако на iOS он не работает. Есть ли разрешение на добавление для iOS? - person Noitidart; 05.06.2017
comment
Вот почему я перешел на nativescript, который обеспечивает 100% естественное ощущение. - person Toni Joe; 18.03.2018

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

person Hamid    schedule 18.01.2019

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

Имейте в виду, что тактильная обратная связь доступна только на некоторых последних устройствах 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.

person Umang Loriya    schedule 27.01.2020
comment
Если у кого-то возникнут проблемы с отсутствием тактильных ощущений от React Native в версии ›0.60 на любых устройствах iOS, поддерживающих тактильную обратную связь, просто перейдите в каталог проекта React Native в структуре папок XCode (в верхнем левом углу XCode) =› Перейдите на вкладки Build Phases (вверху по центру экрана XCode) = ›раскрывающееся меню Связать BIrary с библиотеками =› Добавить, щелкнув (+ перетащите, чтобы изменить порядок связанных двоичных файлов) = ›найдите libRNReactNativeHapticFeedback.a =› добавьте его. Затем остановите выполнение и повторно запустите свой проект или github.com/ junina-de / react-native-haptic-feedback / issues / 40 - person Phok Chanrithisak; 16.10.2020