Expose iPad mouse & track pads interactions to React Native
Ref: https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/pointers/
1. Install the library
npm install @thefunbots/react-native-pointer-interactions --save2. (Optional) Install react-native-swift
If you are not already using any other swift based modules in your app, install and run react-native-swift to configure your iOS project to support swift.
npm install --save react-native-swiftAfter installing it, you will need to link it. Requires project to use Swift 5.0 and iOS SDK 13.4+
- In XCode, in the project navigator, right click
Libraries➜Add Files to [your project's name] - Go to
node_modules➜react-native-pointer-interactionsand addRNPointerInteractions.xcodeproj - In XCode, in the project navigator, select your project. Add
libRNPointerInteractions.ato your project'sBuild Phases➜Link Binary With Libraries - Run your project (
Cmd+R)<
Add this to the Info plists
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>Wrap the views you want to be interactable in PointerInteractionView
import { PointerInteractionView } from '@thefunbots/react-native-pointer-interactions';
<PointerInteractionView pointerMode="lift">
<Text>Hi</Text>
</PointerInteractionView>Soon
The component extends the regular View, so you can use the common properties too.
| Prop | Default | Description |
|---|---|---|
| pointerMode | 'automatic' |
[automatic, lift, highlight, hover, verticalBeam, horizontalBeam] |
| beamLength | Sets the cursor size for Beam modes only | |
| hoverShadow | true |
Determines if the view should have a shadow when hovered |
| hoverScale | true |
Determines if the view should scale up when hovered |
| hoverTing | true |
Determines if the view should have an overlay tint when hovered |
If you want to play with the API but don't feel like trying it on a real app, you can run the example project. Clone the repo, go to the example/ folder and run:
npm installIf you are running on ios, run pod install in the ios folder
Run react-native start to start the metro bundler
Run react-native run-ios (depending on which platform you want to run the example app on).
You will need to have an iOS device or emulator connected as well as react-native-cli package installed globally.
- It doesn't work when wrapping
react-native-gesture-handlerbuttons
