Включить тактильную обратную связь на реагирующем родном сенсорном представлении
Я написал приложение реагировать на родную, и я заметил, что, хотя кнопки выглядят как родные кнопки при нажатии - они не ведут себя как единое целое (При аренде не как кнопки 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