├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ └── start-a-new-issue.md
└── workflows
│ └── github-dependents-info.yml
├── .gitignore
├── .npmignore
├── .prettierrc.js
├── .watchmanconfig
├── DEPENDENTS.md
├── LICENSE
├── README.md
├── ReactNativeKeyboardManager.podspec
├── Sample
├── .eslintrc.js
├── .gitignore
├── .prettierrc.js
├── .watchmanconfig
├── README.md
├── app.json
├── babel.config.js
├── index.js
├── install.sh
├── ios
│ ├── .xcode.env
│ ├── Podfile
│ ├── Podfile.lock
│ ├── ReactNativeKeyboardManagerSample.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── ReactNativeKeyboardManagerSample.xcscheme
│ ├── ReactNativeKeyboardManagerSample.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── ReactNativeKeyboardManagerSample
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.mm
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ ├── LaunchScreen.storyboard
│ │ ├── PrivacyInfo.xcprivacy
│ │ └── main.m
│ └── ReactNativeKeyboardManagerSampleTests
│ │ ├── Info.plist
│ │ └── ReactNativeKeyboardManagerSampleTests.m
├── jest.config.js
├── metro.config.js
├── package.json
├── src
│ ├── App.tsx
│ ├── FormScreen.tsx
│ └── OtherScreen.tsx
├── tsconfig.json
└── yarn.lock
├── babel.config.js
├── dist
└── .gitkeep
├── ios
├── ReactNativeKeyboardManager.xcodeproj
│ └── project.pbxproj
└── ReactNativeKeyboardManager
│ ├── KeyboardManager.swift
│ ├── RCTBaseTextInputView+Hack.h
│ ├── RCTBaseTextInputView+Hack.m
│ ├── RNKMPreviousNextViewManager.h
│ ├── RNKMPreviousNextViewManager.m
│ ├── ReactNativeKeyboardManager-Bridging-Header.h
│ ├── ReactNativeKeyboardManager.h
│ └── ReactNativeKeyboardManager.m
├── jest
└── mock.js
├── package.json
├── screenshots
├── 01.png
├── 02.png
├── 03.png
├── drag-and-drop-01.png
└── drag-and-drop-02.png
├── scripts
└── publish.js
├── src
└── index.ts
├── tsconfig.json
└── yarn.lock
/.eslintignore:
--------------------------------------------------------------------------------
1 | /dist
2 | /node_modules
3 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: '@react-native',
4 | };
5 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.pbxproj -text
2 | Sample/** linguist-vendored
3 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: douglasjunior
4 | patreon: douglasjunior # Replace with a single Patreon username
5 | open_collective: rn-keyboard-manager # Replace with a single Open Collective username
6 | custom: paypal.me/douglasnassif
7 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/start-a-new-issue.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Start a new issue
3 | about: Create a new issue to report a bug, feature or suggestion requests.
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
13 |
14 | - How did you link to the library (autolinking, manual, rn link, cocoapods)?
15 | - What version of React Native?
16 | - What version of the library?
17 | - iOS version?
18 | - Did the problem happen after updating React Native?
19 | - Are you using the library for the first time?
20 | - It's a bug? Provide a link to a minimal reproduction case.
21 |
--------------------------------------------------------------------------------
/.github/workflows/github-dependents-info.yml:
--------------------------------------------------------------------------------
1 | # GitHub Dependents Info workflow
2 | # More info at https://github.com/nvuillam/github-dependents-info/
3 | name: GitHub Dependents Info
4 |
5 | # Let by default
6 | on:
7 | # On manual launch
8 | workflow_dispatch:
9 | # On every push on selected branches (usually just main)
10 | # push:
11 | # branches: [main]
12 | # Scheduled interval: Use CRON format https://crontab.guru/
13 | schedule:
14 | - cron: "0 0 * * 6" # Every sunday at midnight
15 |
16 | permissions: read-all
17 |
18 | concurrency:
19 | group: ${{ github.ref }}-${{ github.workflow }}
20 | cancel-in-progress: true
21 |
22 | jobs:
23 | build:
24 | name: GitHub Dependents Info
25 | runs-on: ubuntu-latest
26 | permissions:
27 | contents: write
28 | pull-requests: write
29 | steps:
30 | # Git Checkout
31 | - name: Checkout Code
32 | uses: actions/checkout@v4
33 | with:
34 | token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
35 | fetch-depth: 0
36 |
37 | # Collect data & generate markdown
38 | - name: GitHub Dependents Info
39 | uses: nvuillam/github-dependents-info@v1.5.1 # If you trust me enough you can replace version by "main" :)
40 | # See documentation for variables details: https://github.com/nvuillam/github-dependents-info?tab=readme-ov-file#%EF%B8%8F-usage
41 | with:
42 | repo: ${{ github.repository }}
43 | outputrepo: ${{ github.repository }}
44 | markdownfile: ./DEPENDENTS.md
45 | # badgemarkdownfile: README.md
46 | sort: stars
47 | # minstars: "0"
48 | env:
49 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
50 |
51 | # Workaround for git issues
52 | - name: Prepare commit
53 | run: sudo chown -R $USER:$USER .
54 |
55 | # Create pull request
56 | - name: Create Pull Request
57 | id: cpr
58 | uses: peter-evans/create-pull-request@v6
59 | with:
60 | token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
61 | branch: github-dependents-info-auto-update
62 | commit-message: "[GitHub Dependents Info] Updated markdown file(s)"
63 | delete-branch: true
64 | title: "[GitHub Dependents Info] Updated markdown file"
65 | body: "_Generated with [github-dependents-info](https://github.com/nvuillam/github-dependents-info), by [Nicolas Vuillamy](https://github.com/nvuillam)_"
66 | labels: documentation
67 | - name: Create PR output
68 | run: |
69 | echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
70 | echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
71 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 | ios/.xcode.env.local
24 |
25 | # Android/IntelliJ
26 | #
27 | build/
28 | .idea
29 | .gradle
30 | local.properties
31 | *.iml
32 | *.hprof
33 | .cxx/
34 | *.keystore
35 | !debug.keystore
36 |
37 | # node.js
38 | #
39 | node_modules/
40 | npm-debug.log
41 | yarn-error.log
42 |
43 | # fastlane
44 | #
45 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
46 | # screenshots whenever they are needed.
47 | # For more information about the recommended setup visit:
48 | # https://docs.fastlane.tools/best-practices/source-control/
49 |
50 | **/fastlane/report.xml
51 | **/fastlane/Preview.html
52 | **/fastlane/screenshots
53 | **/fastlane/test_output
54 |
55 | # Bundle artifact
56 | *.jsbundle
57 |
58 | # Ruby / CocoaPods
59 | /ios/Pods/
60 | /vendor/bundle/
61 |
62 | # Temporary files created by Metro to check the health of the file watcher
63 | .metro-health-check*
64 |
65 | /dist
66 | !/dist/.gitkeep
67 |
68 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | .github/
3 | .prettierrc.js
4 | .eslintrc.js
5 | .eslintignore
6 | tsconfig.json
7 | babel.config.js
8 | node_modules/
9 | __tests__/
10 | screenshots/
11 | Sample/
12 | src/
13 | scripts/
14 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | arrowParens: 'avoid',
3 | bracketSameLine: true,
4 | bracketSpacing: false,
5 | singleQuote: true,
6 | trailingComma: 'all',
7 | };
8 |
--------------------------------------------------------------------------------
/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Douglas Nassif Roma Junior
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # React-Native Keyboard Manager
2 |
3 | [](https://github.com/douglasjunior/react-native-keyboard-manager/blob/master/LICENSE)
4 | [](https://www.npmjs.com/package/react-native-keyboard-manager)
5 | [](#install)
6 |
7 | Library to prevent issues of keyboard sliding up and cover inputs on React-Native iOS projects ⚛. Thanks to awesome [IQKeyboardManager](https://github.com/hackiftekhar/IQKeyboardManager) ❤️.
8 |
9 | This is only for iOS, Android no needed. For Android just add `android:windowSoftInputMode="adjustResize"` to your activity.
10 |
11 | ## Screenshots
12 |
13 | | Enabled | Disabled |
14 | | - | - |
15 | |
|
|
16 |
17 | |
|
18 | | - |
19 | | _Credits: IQKeyboardManager_ |
20 |
21 | ## NOTES:
22 |
23 | - for RN 0.72.0 or later use `react-native-keyboard-manager@latest`
24 | - for RN 0.60.0 ... 0.71.X, use `react-native-keyboard-manager@6.5.11-2`
25 | - for RN 0.53.0 ... 0.59.10, use `react-native-keyboard-manager@4.0.13-12`
26 | - for RN 0.47.0 ... 0.52.2, use `react-native-keyboard-manager@4.0.13-5`
27 | - for RN 0.40.0 ... 0.46.4, use `react-native-keyboard-manager@4.0.13-1`
28 |
29 | ## Install
30 |
31 | 1. Install the JavaScript dependency:
32 |
33 | ```sh
34 | yarn add react-native-keyboard-manager
35 | ```
36 | Or
37 | ```sh
38 | npm i -S react-native-keyboard-manager
39 | ```
40 |
41 | 1. Add the CocoaPods dependency to your `ios/Podfile`:
42 |
43 | ```ruby
44 | # Add temporary IQKeyboardManagerSwift fork to solve problems with PrivacyInfo.xcprivacy
45 | pod 'IQKeyboardManagerSwift', :git => 'https://github.com/douglasjunior/IQKeyboardManager.git', :branch => 'react-native-keyboard-manager'
46 | ```
47 |
48 | > To automate this process on Expo you may need to create a plugin, see https://github.com/douglasjunior/react-native-keyboard-manager/issues/111#issuecomment-2153101561
49 |
50 | 1. Run the CocoaPods installation:
51 |
52 | ```sh
53 | cd ios
54 | pod install
55 | ```
56 |
57 | 1. (optional) To force `IQKeyboardManagerSwift` update with the latest commit:
58 |
59 | ```sh
60 | cd ios
61 | pod update IQKeyboardManagerSwift
62 | ```
63 |
64 | Done! 🎉
65 |
66 | ## Post install
67 |
68 | Because [IQKeyboardManager](https://github.com/hackiftekhar/IQKeyboardManager) is written in `Swift`, you need to enable `Swift` on your native Xcode project.
69 |
70 | 1. Open `ios/YourAppName.xcworkspace` in Xcode
71 | 1. Right-click on `YourAppName` in the `Project Navigator` on the left, and click `New File`.
72 | 1. Create a single empty `Swift` file to the project (make sure that `YourAppName` target is selected when adding)
73 | 1. When Xcode asks, press **Create Bridging Header** and do not remove `Swift` file then.
74 | 1. Re-run your build.
75 |
76 | ## Usage
77 |
78 | It does not need any extra library setup to work, just [install](#install) and go.
79 |
80 | But, if you need some configuration, there are some options available.
81 |
82 | ```js
83 | import { Platform } from 'react-native';
84 | import KeyboardManager from 'react-native-keyboard-manager';
85 |
86 | if (Platform.OS === 'ios') {
87 | KeyboardManager.setEnable(true);
88 | KeyboardManager.setEnableDebugging(false);
89 | KeyboardManager.setKeyboardDistanceFromTextField(10);
90 | KeyboardManager.setLayoutIfNeededOnUpdate(true);
91 | KeyboardManager.setEnableAutoToolbar(true);
92 | KeyboardManager.setToolbarDoneBarButtonItemText("Done");
93 | KeyboardManager.setToolbarManageBehaviourBy("subviews"); // "subviews" | "tag" | "position"
94 | KeyboardManager.setToolbarPreviousNextButtonEnable(false);
95 | KeyboardManager.setToolbarTintColor('#0000FF'); // Only #000000 format is supported
96 | KeyboardManager.setToolbarBarTintColor('#FFFFFF'); // Only #000000 format is supported
97 | KeyboardManager.setShouldShowToolbarPlaceholder(true);
98 | KeyboardManager.setOverrideKeyboardAppearance(false);
99 | KeyboardManager.setKeyboardAppearance("default"); // "default" | "light" | "dark"
100 | KeyboardManager.setShouldResignOnTouchOutside(true);
101 | KeyboardManager.setShouldPlayInputClicks(true);
102 | KeyboardManager.resignFirstResponder();
103 | KeyboardManager.isKeyboardShowing()
104 | .then((isShowing) => {
105 | // ...
106 | });
107 | }
108 | ```
109 |
110 | For more details, see the [Sample Project](https://github.com/douglasjunior/react-native-keyboard-manager/blob/master/Sample/src/FormScreen.tsx) and the official [IQKeyboardManager documentation](https://github.com/hackiftekhar/IQKeyboardManager/).
111 |
112 | ### Enable Next/Previous buttons
113 |
114 | If you want to use Next/Previous buttons, enable it.
115 |
116 | ```js
117 | if (Platform.OS === 'ios') {
118 | KeyboardManager.setToolbarPreviousNextButtonEnable(true);
119 | }
120 | ```
121 |
122 | And if you want to use Next/Previous buttons inside a `Modal`, you need to wrap the fields in a `PreviousNextView`.
123 |
124 | ```jsx
125 | import { PreviousNextView } from 'react-native-keyboard-manager';
126 |
127 | class App extends Component {
128 | render() {
129 | return (
130 |
131 | // others views
132 |
133 | // others views
134 |
135 | // all TextInput
136 |
137 |
138 |
139 | );
140 | }
141 | }
142 | ```
143 |
144 | # Mock with jest
145 |
146 | ```js
147 | jest.mock('react-native-keyboard-manager', () => require('react-native-keyboard-manager/jest/mock'));
148 | ```
149 |
150 | # Known issues
151 |
152 | - If your project is managed by Expo, you will need to eject.
153 | - Pod install failed on M1 machines: https://github.com/douglasjunior/react-native-keyboard-manager/issues/104
154 | - ~~Problem with "@react-navigation/native-stack" and "IQKeyboardManager" on iOS: https://github.com/douglasjunior/react-native-keyboard-manager/issues/89~~
155 | - Seems to be fixed in version `6.5.16-0`
156 |
157 | ## Contribute
158 |
159 | New features, bug fixes and improvements are welcome! For questions and suggestions use the [issues](https://github.com/douglasjunior/react-native-keyboard-manager/issues).
160 |
161 |
162 | [](https://paypal.me/douglasnassif)
163 |
164 | ## Star History
165 |
166 | [](https://star-history.com/#douglasjunior/react-native-keyboard-manager&Date)
167 |
168 | ## License
169 |
170 | ```
171 | The MIT License (MIT)
172 |
173 | Copyright (c) 2017 Douglas Nassif Roma Junior
174 | ```
175 |
176 | See the full [license file](https://github.com/douglasjunior/react-native-keyboard-manager/blob/master/LICENSE).
177 |
178 | ## IQKeyboardManager License
179 |
180 | ```
181 | The MIT License (MIT)
182 |
183 | Copyright (c) 2013-16 Iftekhar Qurashi
184 | ```
185 |
186 | See the full [IQKeyboardManager license file](https://github.com/hackiftekhar/IQKeyboardManager/blob/master/LICENSE.md).
187 |
--------------------------------------------------------------------------------
/ReactNativeKeyboardManager.podspec:
--------------------------------------------------------------------------------
1 | require 'json'
2 |
3 | packageJson = JSON.parse(File.read('package.json'))
4 | version = packageJson["version"]
5 | repository = packageJson["repository"]["url"]
6 | iqVersion = version.split('-').first
7 |
8 | Pod::Spec.new do |s|
9 | s.name = "ReactNativeKeyboardManager"
10 | s.version = version
11 | s.description = packageJson["description"]
12 | s.homepage = packageJson["homepage"]
13 | s.summary = packageJson["description"]
14 | s.license = packageJson["license"]
15 | s.authors = packageJson["author"]
16 | s.source = { :git => repository, :tag => version }
17 | s.platform = :ios, "9.0"
18 | s.preserve_paths = 'README.md', 'package.json', '*.js'
19 | s.source_files = 'ios/ReactNativeKeyboardManager/**/*.{h,m}'
20 |
21 | s.dependency 'React-Core'
22 | s.dependency 'React-RCTText'
23 | s.dependency 'IQKeyboardManagerSwift', iqVersion
24 | end
25 |
--------------------------------------------------------------------------------
/Sample/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: '@react-native',
4 | };
5 |
--------------------------------------------------------------------------------
/Sample/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 | **/.xcode.env.local
24 |
25 | # Android/IntelliJ
26 | #
27 | build/
28 | .idea
29 | .gradle
30 | local.properties
31 | *.iml
32 | *.hprof
33 | .cxx/
34 | *.keystore
35 | !debug.keystore
36 |
37 | # node.js
38 | #
39 | node_modules/
40 | npm-debug.log
41 | yarn-error.log
42 |
43 | # fastlane
44 | #
45 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
46 | # screenshots whenever they are needed.
47 | # For more information about the recommended setup visit:
48 | # https://docs.fastlane.tools/best-practices/source-control/
49 |
50 | **/fastlane/report.xml
51 | **/fastlane/Preview.html
52 | **/fastlane/screenshots
53 | **/fastlane/test_output
54 |
55 | # Bundle artifact
56 | *.jsbundle
57 |
58 | # Ruby / CocoaPods
59 | **/Pods/
60 | /vendor/bundle/
61 |
62 | # Temporary files created by Metro to check the health of the file watcher
63 | .metro-health-check*
64 |
65 | # testing
66 | /coverage
67 |
68 | # Yarn
69 | .yarn/*
70 | !.yarn/patches
71 | !.yarn/plugins
72 | !.yarn/releases
73 | !.yarn/sdks
74 | !.yarn/versions
75 |
--------------------------------------------------------------------------------
/Sample/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | arrowParens: 'avoid',
3 | bracketSameLine: true,
4 | bracketSpacing: false,
5 | singleQuote: true,
6 | trailingComma: 'all',
7 | };
8 |
--------------------------------------------------------------------------------
/Sample/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/Sample/README.md:
--------------------------------------------------------------------------------
1 | This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
2 |
3 | # Getting Started
4 |
5 | >**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
6 |
7 | ## Step 1: Start the Metro Server
8 |
9 | First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
10 |
11 | To start Metro, run the following command from the _root_ of your React Native project:
12 |
13 | ```bash
14 | # using npm
15 | npm start
16 |
17 | # OR using Yarn
18 | yarn start
19 | ```
20 |
21 | ## Step 2: Start your Application
22 |
23 | Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
24 |
25 | ### For Android
26 |
27 | ```bash
28 | # using npm
29 | npm run android
30 |
31 | # OR using Yarn
32 | yarn android
33 | ```
34 |
35 | ### For iOS
36 |
37 | ```bash
38 | # using npm
39 | npm run ios
40 |
41 | # OR using Yarn
42 | yarn ios
43 | ```
44 |
45 | If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
46 |
47 | This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
48 |
49 | ## Step 3: Modifying your App
50 |
51 | Now that you have successfully run the app, let's modify it.
52 |
53 | 1. Open `App.tsx` in your text editor of choice and edit some lines.
54 | 2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes!
55 |
56 | For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes!
57 |
58 | ## Congratulations! :tada:
59 |
60 | You've successfully run and modified your React Native App. :partying_face:
61 |
62 | ### Now what?
63 |
64 | - If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
65 | - If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
66 |
67 | # Troubleshooting
68 |
69 | If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
70 |
71 | # Learn More
72 |
73 | To learn more about React Native, take a look at the following resources:
74 |
75 | - [React Native Website](https://reactnative.dev) - learn more about React Native.
76 | - [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
77 | - [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
78 | - [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
79 | - [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
80 |
--------------------------------------------------------------------------------
/Sample/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ReactNativeKeyboardManagerSample",
3 | "displayName": "ReactNativeKeyboardManagerSample"
4 | }
5 |
--------------------------------------------------------------------------------
/Sample/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['module:@react-native/babel-preset'],
3 | };
4 |
--------------------------------------------------------------------------------
/Sample/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @format
3 | */
4 |
5 | import {AppRegistry} from 'react-native';
6 | import App from './src/App.tsx';
7 | import {name as appName} from './app.json';
8 |
9 | AppRegistry.registerComponent(appName, () => App);
10 |
--------------------------------------------------------------------------------
/Sample/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | rm -rf ../node_modules/
4 | rm -rf .git/
5 | rm -rf node_modules/
6 | rm -rf ios/Pods
7 |
8 | yarn install
9 |
10 | cd ios
11 | pod install
12 |
13 | # Force to update the IQKeyboardManagerSwift fork
14 | pod update IQKeyboardManagerSwift
15 |
--------------------------------------------------------------------------------
/Sample/ios/.xcode.env:
--------------------------------------------------------------------------------
1 | # This `.xcode.env` file is versioned and is used to source the environment
2 | # used when running script phases inside Xcode.
3 | # To customize your local environment, you can create an `.xcode.env.local`
4 | # file that is not versioned.
5 |
6 | # NODE_BINARY variable contains the PATH to the node executable.
7 | #
8 | # Customize the NODE_BINARY variable here.
9 | # For example, to use nvm with brew, add the following line
10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use
11 | export NODE_BINARY=$(command -v node)
12 |
--------------------------------------------------------------------------------
/Sample/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Resolve react_native_pods.rb with node to allow for hoisting
2 | require Pod::Executable.execute_command('node', ['-p',
3 | 'require.resolve(
4 | "react-native/scripts/react_native_pods.rb",
5 | {paths: [process.argv[1]]},
6 | )', __dir__]).strip
7 |
8 | platform :ios, min_ios_version_supported
9 | prepare_react_native_project!
10 |
11 | linkage = ENV['USE_FRAMEWORKS']
12 | if linkage != nil
13 | Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
14 | use_frameworks! :linkage => linkage.to_sym
15 | end
16 |
17 | target 'ReactNativeKeyboardManagerSample' do
18 | config = use_native_modules!
19 |
20 | use_react_native!(
21 | :path => config[:reactNativePath],
22 | # An absolute path to your application root.
23 | :app_path => "#{Pod::Config.instance.installation_root}/.."
24 | )
25 |
26 | pod 'IQKeyboardManagerSwift', :git => 'https://github.com/douglasjunior/IQKeyboardManager.git', :branch => 'react-native-keyboard-manager'
27 |
28 | target 'ReactNativeKeyboardManagerSampleTests' do
29 | inherit! :complete
30 | # Pods for testing
31 | end
32 |
33 | post_install do |installer|
34 | # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
35 | react_native_post_install(
36 | installer,
37 | config[:reactNativePath],
38 | :mac_catalyst_enabled => false,
39 | # :ccache_enabled => true
40 | )
41 | end
42 | end
43 |
--------------------------------------------------------------------------------
/Sample/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - boost (1.83.0)
3 | - DoubleConversion (1.1.6)
4 | - FBLazyVector (0.74.0)
5 | - fmt (9.1.0)
6 | - glog (0.3.5)
7 | - hermes-engine (0.74.0):
8 | - hermes-engine/Pre-built (= 0.74.0)
9 | - hermes-engine/Pre-built (0.74.0)
10 | - IQKeyboardManagerSwift (6.5.16)
11 | - RCT-Folly (2024.01.01.00):
12 | - boost
13 | - DoubleConversion
14 | - fmt (= 9.1.0)
15 | - glog
16 | - RCT-Folly/Default (= 2024.01.01.00)
17 | - RCT-Folly/Default (2024.01.01.00):
18 | - boost
19 | - DoubleConversion
20 | - fmt (= 9.1.0)
21 | - glog
22 | - RCT-Folly/Fabric (2024.01.01.00):
23 | - boost
24 | - DoubleConversion
25 | - fmt (= 9.1.0)
26 | - glog
27 | - RCTDeprecation (0.74.0)
28 | - RCTRequired (0.74.0)
29 | - RCTTypeSafety (0.74.0):
30 | - FBLazyVector (= 0.74.0)
31 | - RCTRequired (= 0.74.0)
32 | - React-Core (= 0.74.0)
33 | - React (0.74.0):
34 | - React-Core (= 0.74.0)
35 | - React-Core/DevSupport (= 0.74.0)
36 | - React-Core/RCTWebSocket (= 0.74.0)
37 | - React-RCTActionSheet (= 0.74.0)
38 | - React-RCTAnimation (= 0.74.0)
39 | - React-RCTBlob (= 0.74.0)
40 | - React-RCTImage (= 0.74.0)
41 | - React-RCTLinking (= 0.74.0)
42 | - React-RCTNetwork (= 0.74.0)
43 | - React-RCTSettings (= 0.74.0)
44 | - React-RCTText (= 0.74.0)
45 | - React-RCTVibration (= 0.74.0)
46 | - React-callinvoker (0.74.0)
47 | - React-Codegen (0.74.0):
48 | - DoubleConversion
49 | - glog
50 | - hermes-engine
51 | - RCT-Folly
52 | - RCTRequired
53 | - RCTTypeSafety
54 | - React-Core
55 | - React-debug
56 | - React-Fabric
57 | - React-FabricImage
58 | - React-featureflags
59 | - React-graphics
60 | - React-jsi
61 | - React-jsiexecutor
62 | - React-NativeModulesApple
63 | - React-rendererdebug
64 | - React-utils
65 | - ReactCommon/turbomodule/bridging
66 | - ReactCommon/turbomodule/core
67 | - React-Core (0.74.0):
68 | - glog
69 | - hermes-engine
70 | - RCT-Folly (= 2024.01.01.00)
71 | - RCTDeprecation
72 | - React-Core/Default (= 0.74.0)
73 | - React-cxxreact
74 | - React-featureflags
75 | - React-hermes
76 | - React-jsi
77 | - React-jsiexecutor
78 | - React-jsinspector
79 | - React-perflogger
80 | - React-runtimescheduler
81 | - React-utils
82 | - SocketRocket (= 0.7.0)
83 | - Yoga
84 | - React-Core/CoreModulesHeaders (0.74.0):
85 | - glog
86 | - hermes-engine
87 | - RCT-Folly (= 2024.01.01.00)
88 | - RCTDeprecation
89 | - React-Core/Default
90 | - React-cxxreact
91 | - React-featureflags
92 | - React-hermes
93 | - React-jsi
94 | - React-jsiexecutor
95 | - React-jsinspector
96 | - React-perflogger
97 | - React-runtimescheduler
98 | - React-utils
99 | - SocketRocket (= 0.7.0)
100 | - Yoga
101 | - React-Core/Default (0.74.0):
102 | - glog
103 | - hermes-engine
104 | - RCT-Folly (= 2024.01.01.00)
105 | - RCTDeprecation
106 | - React-cxxreact
107 | - React-featureflags
108 | - React-hermes
109 | - React-jsi
110 | - React-jsiexecutor
111 | - React-jsinspector
112 | - React-perflogger
113 | - React-runtimescheduler
114 | - React-utils
115 | - SocketRocket (= 0.7.0)
116 | - Yoga
117 | - React-Core/DevSupport (0.74.0):
118 | - glog
119 | - hermes-engine
120 | - RCT-Folly (= 2024.01.01.00)
121 | - RCTDeprecation
122 | - React-Core/Default (= 0.74.0)
123 | - React-Core/RCTWebSocket (= 0.74.0)
124 | - React-cxxreact
125 | - React-featureflags
126 | - React-hermes
127 | - React-jsi
128 | - React-jsiexecutor
129 | - React-jsinspector
130 | - React-perflogger
131 | - React-runtimescheduler
132 | - React-utils
133 | - SocketRocket (= 0.7.0)
134 | - Yoga
135 | - React-Core/RCTActionSheetHeaders (0.74.0):
136 | - glog
137 | - hermes-engine
138 | - RCT-Folly (= 2024.01.01.00)
139 | - RCTDeprecation
140 | - React-Core/Default
141 | - React-cxxreact
142 | - React-featureflags
143 | - React-hermes
144 | - React-jsi
145 | - React-jsiexecutor
146 | - React-jsinspector
147 | - React-perflogger
148 | - React-runtimescheduler
149 | - React-utils
150 | - SocketRocket (= 0.7.0)
151 | - Yoga
152 | - React-Core/RCTAnimationHeaders (0.74.0):
153 | - glog
154 | - hermes-engine
155 | - RCT-Folly (= 2024.01.01.00)
156 | - RCTDeprecation
157 | - React-Core/Default
158 | - React-cxxreact
159 | - React-featureflags
160 | - React-hermes
161 | - React-jsi
162 | - React-jsiexecutor
163 | - React-jsinspector
164 | - React-perflogger
165 | - React-runtimescheduler
166 | - React-utils
167 | - SocketRocket (= 0.7.0)
168 | - Yoga
169 | - React-Core/RCTBlobHeaders (0.74.0):
170 | - glog
171 | - hermes-engine
172 | - RCT-Folly (= 2024.01.01.00)
173 | - RCTDeprecation
174 | - React-Core/Default
175 | - React-cxxreact
176 | - React-featureflags
177 | - React-hermes
178 | - React-jsi
179 | - React-jsiexecutor
180 | - React-jsinspector
181 | - React-perflogger
182 | - React-runtimescheduler
183 | - React-utils
184 | - SocketRocket (= 0.7.0)
185 | - Yoga
186 | - React-Core/RCTImageHeaders (0.74.0):
187 | - glog
188 | - hermes-engine
189 | - RCT-Folly (= 2024.01.01.00)
190 | - RCTDeprecation
191 | - React-Core/Default
192 | - React-cxxreact
193 | - React-featureflags
194 | - React-hermes
195 | - React-jsi
196 | - React-jsiexecutor
197 | - React-jsinspector
198 | - React-perflogger
199 | - React-runtimescheduler
200 | - React-utils
201 | - SocketRocket (= 0.7.0)
202 | - Yoga
203 | - React-Core/RCTLinkingHeaders (0.74.0):
204 | - glog
205 | - hermes-engine
206 | - RCT-Folly (= 2024.01.01.00)
207 | - RCTDeprecation
208 | - React-Core/Default
209 | - React-cxxreact
210 | - React-featureflags
211 | - React-hermes
212 | - React-jsi
213 | - React-jsiexecutor
214 | - React-jsinspector
215 | - React-perflogger
216 | - React-runtimescheduler
217 | - React-utils
218 | - SocketRocket (= 0.7.0)
219 | - Yoga
220 | - React-Core/RCTNetworkHeaders (0.74.0):
221 | - glog
222 | - hermes-engine
223 | - RCT-Folly (= 2024.01.01.00)
224 | - RCTDeprecation
225 | - React-Core/Default
226 | - React-cxxreact
227 | - React-featureflags
228 | - React-hermes
229 | - React-jsi
230 | - React-jsiexecutor
231 | - React-jsinspector
232 | - React-perflogger
233 | - React-runtimescheduler
234 | - React-utils
235 | - SocketRocket (= 0.7.0)
236 | - Yoga
237 | - React-Core/RCTSettingsHeaders (0.74.0):
238 | - glog
239 | - hermes-engine
240 | - RCT-Folly (= 2024.01.01.00)
241 | - RCTDeprecation
242 | - React-Core/Default
243 | - React-cxxreact
244 | - React-featureflags
245 | - React-hermes
246 | - React-jsi
247 | - React-jsiexecutor
248 | - React-jsinspector
249 | - React-perflogger
250 | - React-runtimescheduler
251 | - React-utils
252 | - SocketRocket (= 0.7.0)
253 | - Yoga
254 | - React-Core/RCTTextHeaders (0.74.0):
255 | - glog
256 | - hermes-engine
257 | - RCT-Folly (= 2024.01.01.00)
258 | - RCTDeprecation
259 | - React-Core/Default
260 | - React-cxxreact
261 | - React-featureflags
262 | - React-hermes
263 | - React-jsi
264 | - React-jsiexecutor
265 | - React-jsinspector
266 | - React-perflogger
267 | - React-runtimescheduler
268 | - React-utils
269 | - SocketRocket (= 0.7.0)
270 | - Yoga
271 | - React-Core/RCTVibrationHeaders (0.74.0):
272 | - glog
273 | - hermes-engine
274 | - RCT-Folly (= 2024.01.01.00)
275 | - RCTDeprecation
276 | - React-Core/Default
277 | - React-cxxreact
278 | - React-featureflags
279 | - React-hermes
280 | - React-jsi
281 | - React-jsiexecutor
282 | - React-jsinspector
283 | - React-perflogger
284 | - React-runtimescheduler
285 | - React-utils
286 | - SocketRocket (= 0.7.0)
287 | - Yoga
288 | - React-Core/RCTWebSocket (0.74.0):
289 | - glog
290 | - hermes-engine
291 | - RCT-Folly (= 2024.01.01.00)
292 | - RCTDeprecation
293 | - React-Core/Default (= 0.74.0)
294 | - React-cxxreact
295 | - React-featureflags
296 | - React-hermes
297 | - React-jsi
298 | - React-jsiexecutor
299 | - React-jsinspector
300 | - React-perflogger
301 | - React-runtimescheduler
302 | - React-utils
303 | - SocketRocket (= 0.7.0)
304 | - Yoga
305 | - React-CoreModules (0.74.0):
306 | - DoubleConversion
307 | - fmt (= 9.1.0)
308 | - RCT-Folly (= 2024.01.01.00)
309 | - RCTTypeSafety (= 0.74.0)
310 | - React-Codegen
311 | - React-Core/CoreModulesHeaders (= 0.74.0)
312 | - React-jsi (= 0.74.0)
313 | - React-jsinspector
314 | - React-NativeModulesApple
315 | - React-RCTBlob
316 | - React-RCTImage (= 0.74.0)
317 | - ReactCommon
318 | - SocketRocket (= 0.7.0)
319 | - React-cxxreact (0.74.0):
320 | - boost (= 1.83.0)
321 | - DoubleConversion
322 | - fmt (= 9.1.0)
323 | - glog
324 | - hermes-engine
325 | - RCT-Folly (= 2024.01.01.00)
326 | - React-callinvoker (= 0.74.0)
327 | - React-debug (= 0.74.0)
328 | - React-jsi (= 0.74.0)
329 | - React-jsinspector
330 | - React-logger (= 0.74.0)
331 | - React-perflogger (= 0.74.0)
332 | - React-runtimeexecutor (= 0.74.0)
333 | - React-debug (0.74.0)
334 | - React-Fabric (0.74.0):
335 | - DoubleConversion
336 | - fmt (= 9.1.0)
337 | - glog
338 | - hermes-engine
339 | - RCT-Folly/Fabric (= 2024.01.01.00)
340 | - RCTRequired
341 | - RCTTypeSafety
342 | - React-Core
343 | - React-cxxreact
344 | - React-debug
345 | - React-Fabric/animations (= 0.74.0)
346 | - React-Fabric/attributedstring (= 0.74.0)
347 | - React-Fabric/componentregistry (= 0.74.0)
348 | - React-Fabric/componentregistrynative (= 0.74.0)
349 | - React-Fabric/components (= 0.74.0)
350 | - React-Fabric/core (= 0.74.0)
351 | - React-Fabric/imagemanager (= 0.74.0)
352 | - React-Fabric/leakchecker (= 0.74.0)
353 | - React-Fabric/mounting (= 0.74.0)
354 | - React-Fabric/scheduler (= 0.74.0)
355 | - React-Fabric/telemetry (= 0.74.0)
356 | - React-Fabric/templateprocessor (= 0.74.0)
357 | - React-Fabric/textlayoutmanager (= 0.74.0)
358 | - React-Fabric/uimanager (= 0.74.0)
359 | - React-graphics
360 | - React-jsi
361 | - React-jsiexecutor
362 | - React-logger
363 | - React-rendererdebug
364 | - React-runtimescheduler
365 | - React-utils
366 | - ReactCommon/turbomodule/core
367 | - React-Fabric/animations (0.74.0):
368 | - DoubleConversion
369 | - fmt (= 9.1.0)
370 | - glog
371 | - hermes-engine
372 | - RCT-Folly/Fabric (= 2024.01.01.00)
373 | - RCTRequired
374 | - RCTTypeSafety
375 | - React-Core
376 | - React-cxxreact
377 | - React-debug
378 | - React-graphics
379 | - React-jsi
380 | - React-jsiexecutor
381 | - React-logger
382 | - React-rendererdebug
383 | - React-runtimescheduler
384 | - React-utils
385 | - ReactCommon/turbomodule/core
386 | - React-Fabric/attributedstring (0.74.0):
387 | - DoubleConversion
388 | - fmt (= 9.1.0)
389 | - glog
390 | - hermes-engine
391 | - RCT-Folly/Fabric (= 2024.01.01.00)
392 | - RCTRequired
393 | - RCTTypeSafety
394 | - React-Core
395 | - React-cxxreact
396 | - React-debug
397 | - React-graphics
398 | - React-jsi
399 | - React-jsiexecutor
400 | - React-logger
401 | - React-rendererdebug
402 | - React-runtimescheduler
403 | - React-utils
404 | - ReactCommon/turbomodule/core
405 | - React-Fabric/componentregistry (0.74.0):
406 | - DoubleConversion
407 | - fmt (= 9.1.0)
408 | - glog
409 | - hermes-engine
410 | - RCT-Folly/Fabric (= 2024.01.01.00)
411 | - RCTRequired
412 | - RCTTypeSafety
413 | - React-Core
414 | - React-cxxreact
415 | - React-debug
416 | - React-graphics
417 | - React-jsi
418 | - React-jsiexecutor
419 | - React-logger
420 | - React-rendererdebug
421 | - React-runtimescheduler
422 | - React-utils
423 | - ReactCommon/turbomodule/core
424 | - React-Fabric/componentregistrynative (0.74.0):
425 | - DoubleConversion
426 | - fmt (= 9.1.0)
427 | - glog
428 | - hermes-engine
429 | - RCT-Folly/Fabric (= 2024.01.01.00)
430 | - RCTRequired
431 | - RCTTypeSafety
432 | - React-Core
433 | - React-cxxreact
434 | - React-debug
435 | - React-graphics
436 | - React-jsi
437 | - React-jsiexecutor
438 | - React-logger
439 | - React-rendererdebug
440 | - React-runtimescheduler
441 | - React-utils
442 | - ReactCommon/turbomodule/core
443 | - React-Fabric/components (0.74.0):
444 | - DoubleConversion
445 | - fmt (= 9.1.0)
446 | - glog
447 | - hermes-engine
448 | - RCT-Folly/Fabric (= 2024.01.01.00)
449 | - RCTRequired
450 | - RCTTypeSafety
451 | - React-Core
452 | - React-cxxreact
453 | - React-debug
454 | - React-Fabric/components/inputaccessory (= 0.74.0)
455 | - React-Fabric/components/legacyviewmanagerinterop (= 0.74.0)
456 | - React-Fabric/components/modal (= 0.74.0)
457 | - React-Fabric/components/rncore (= 0.74.0)
458 | - React-Fabric/components/root (= 0.74.0)
459 | - React-Fabric/components/safeareaview (= 0.74.0)
460 | - React-Fabric/components/scrollview (= 0.74.0)
461 | - React-Fabric/components/text (= 0.74.0)
462 | - React-Fabric/components/textinput (= 0.74.0)
463 | - React-Fabric/components/unimplementedview (= 0.74.0)
464 | - React-Fabric/components/view (= 0.74.0)
465 | - React-graphics
466 | - React-jsi
467 | - React-jsiexecutor
468 | - React-logger
469 | - React-rendererdebug
470 | - React-runtimescheduler
471 | - React-utils
472 | - ReactCommon/turbomodule/core
473 | - React-Fabric/components/inputaccessory (0.74.0):
474 | - DoubleConversion
475 | - fmt (= 9.1.0)
476 | - glog
477 | - hermes-engine
478 | - RCT-Folly/Fabric (= 2024.01.01.00)
479 | - RCTRequired
480 | - RCTTypeSafety
481 | - React-Core
482 | - React-cxxreact
483 | - React-debug
484 | - React-graphics
485 | - React-jsi
486 | - React-jsiexecutor
487 | - React-logger
488 | - React-rendererdebug
489 | - React-runtimescheduler
490 | - React-utils
491 | - ReactCommon/turbomodule/core
492 | - React-Fabric/components/legacyviewmanagerinterop (0.74.0):
493 | - DoubleConversion
494 | - fmt (= 9.1.0)
495 | - glog
496 | - hermes-engine
497 | - RCT-Folly/Fabric (= 2024.01.01.00)
498 | - RCTRequired
499 | - RCTTypeSafety
500 | - React-Core
501 | - React-cxxreact
502 | - React-debug
503 | - React-graphics
504 | - React-jsi
505 | - React-jsiexecutor
506 | - React-logger
507 | - React-rendererdebug
508 | - React-runtimescheduler
509 | - React-utils
510 | - ReactCommon/turbomodule/core
511 | - React-Fabric/components/modal (0.74.0):
512 | - DoubleConversion
513 | - fmt (= 9.1.0)
514 | - glog
515 | - hermes-engine
516 | - RCT-Folly/Fabric (= 2024.01.01.00)
517 | - RCTRequired
518 | - RCTTypeSafety
519 | - React-Core
520 | - React-cxxreact
521 | - React-debug
522 | - React-graphics
523 | - React-jsi
524 | - React-jsiexecutor
525 | - React-logger
526 | - React-rendererdebug
527 | - React-runtimescheduler
528 | - React-utils
529 | - ReactCommon/turbomodule/core
530 | - React-Fabric/components/rncore (0.74.0):
531 | - DoubleConversion
532 | - fmt (= 9.1.0)
533 | - glog
534 | - hermes-engine
535 | - RCT-Folly/Fabric (= 2024.01.01.00)
536 | - RCTRequired
537 | - RCTTypeSafety
538 | - React-Core
539 | - React-cxxreact
540 | - React-debug
541 | - React-graphics
542 | - React-jsi
543 | - React-jsiexecutor
544 | - React-logger
545 | - React-rendererdebug
546 | - React-runtimescheduler
547 | - React-utils
548 | - ReactCommon/turbomodule/core
549 | - React-Fabric/components/root (0.74.0):
550 | - DoubleConversion
551 | - fmt (= 9.1.0)
552 | - glog
553 | - hermes-engine
554 | - RCT-Folly/Fabric (= 2024.01.01.00)
555 | - RCTRequired
556 | - RCTTypeSafety
557 | - React-Core
558 | - React-cxxreact
559 | - React-debug
560 | - React-graphics
561 | - React-jsi
562 | - React-jsiexecutor
563 | - React-logger
564 | - React-rendererdebug
565 | - React-runtimescheduler
566 | - React-utils
567 | - ReactCommon/turbomodule/core
568 | - React-Fabric/components/safeareaview (0.74.0):
569 | - DoubleConversion
570 | - fmt (= 9.1.0)
571 | - glog
572 | - hermes-engine
573 | - RCT-Folly/Fabric (= 2024.01.01.00)
574 | - RCTRequired
575 | - RCTTypeSafety
576 | - React-Core
577 | - React-cxxreact
578 | - React-debug
579 | - React-graphics
580 | - React-jsi
581 | - React-jsiexecutor
582 | - React-logger
583 | - React-rendererdebug
584 | - React-runtimescheduler
585 | - React-utils
586 | - ReactCommon/turbomodule/core
587 | - React-Fabric/components/scrollview (0.74.0):
588 | - DoubleConversion
589 | - fmt (= 9.1.0)
590 | - glog
591 | - hermes-engine
592 | - RCT-Folly/Fabric (= 2024.01.01.00)
593 | - RCTRequired
594 | - RCTTypeSafety
595 | - React-Core
596 | - React-cxxreact
597 | - React-debug
598 | - React-graphics
599 | - React-jsi
600 | - React-jsiexecutor
601 | - React-logger
602 | - React-rendererdebug
603 | - React-runtimescheduler
604 | - React-utils
605 | - ReactCommon/turbomodule/core
606 | - React-Fabric/components/text (0.74.0):
607 | - DoubleConversion
608 | - fmt (= 9.1.0)
609 | - glog
610 | - hermes-engine
611 | - RCT-Folly/Fabric (= 2024.01.01.00)
612 | - RCTRequired
613 | - RCTTypeSafety
614 | - React-Core
615 | - React-cxxreact
616 | - React-debug
617 | - React-graphics
618 | - React-jsi
619 | - React-jsiexecutor
620 | - React-logger
621 | - React-rendererdebug
622 | - React-runtimescheduler
623 | - React-utils
624 | - ReactCommon/turbomodule/core
625 | - React-Fabric/components/textinput (0.74.0):
626 | - DoubleConversion
627 | - fmt (= 9.1.0)
628 | - glog
629 | - hermes-engine
630 | - RCT-Folly/Fabric (= 2024.01.01.00)
631 | - RCTRequired
632 | - RCTTypeSafety
633 | - React-Core
634 | - React-cxxreact
635 | - React-debug
636 | - React-graphics
637 | - React-jsi
638 | - React-jsiexecutor
639 | - React-logger
640 | - React-rendererdebug
641 | - React-runtimescheduler
642 | - React-utils
643 | - ReactCommon/turbomodule/core
644 | - React-Fabric/components/unimplementedview (0.74.0):
645 | - DoubleConversion
646 | - fmt (= 9.1.0)
647 | - glog
648 | - hermes-engine
649 | - RCT-Folly/Fabric (= 2024.01.01.00)
650 | - RCTRequired
651 | - RCTTypeSafety
652 | - React-Core
653 | - React-cxxreact
654 | - React-debug
655 | - React-graphics
656 | - React-jsi
657 | - React-jsiexecutor
658 | - React-logger
659 | - React-rendererdebug
660 | - React-runtimescheduler
661 | - React-utils
662 | - ReactCommon/turbomodule/core
663 | - React-Fabric/components/view (0.74.0):
664 | - DoubleConversion
665 | - fmt (= 9.1.0)
666 | - glog
667 | - hermes-engine
668 | - RCT-Folly/Fabric (= 2024.01.01.00)
669 | - RCTRequired
670 | - RCTTypeSafety
671 | - React-Core
672 | - React-cxxreact
673 | - React-debug
674 | - React-graphics
675 | - React-jsi
676 | - React-jsiexecutor
677 | - React-logger
678 | - React-rendererdebug
679 | - React-runtimescheduler
680 | - React-utils
681 | - ReactCommon/turbomodule/core
682 | - Yoga
683 | - React-Fabric/core (0.74.0):
684 | - DoubleConversion
685 | - fmt (= 9.1.0)
686 | - glog
687 | - hermes-engine
688 | - RCT-Folly/Fabric (= 2024.01.01.00)
689 | - RCTRequired
690 | - RCTTypeSafety
691 | - React-Core
692 | - React-cxxreact
693 | - React-debug
694 | - React-graphics
695 | - React-jsi
696 | - React-jsiexecutor
697 | - React-logger
698 | - React-rendererdebug
699 | - React-runtimescheduler
700 | - React-utils
701 | - ReactCommon/turbomodule/core
702 | - React-Fabric/imagemanager (0.74.0):
703 | - DoubleConversion
704 | - fmt (= 9.1.0)
705 | - glog
706 | - hermes-engine
707 | - RCT-Folly/Fabric (= 2024.01.01.00)
708 | - RCTRequired
709 | - RCTTypeSafety
710 | - React-Core
711 | - React-cxxreact
712 | - React-debug
713 | - React-graphics
714 | - React-jsi
715 | - React-jsiexecutor
716 | - React-logger
717 | - React-rendererdebug
718 | - React-runtimescheduler
719 | - React-utils
720 | - ReactCommon/turbomodule/core
721 | - React-Fabric/leakchecker (0.74.0):
722 | - DoubleConversion
723 | - fmt (= 9.1.0)
724 | - glog
725 | - hermes-engine
726 | - RCT-Folly/Fabric (= 2024.01.01.00)
727 | - RCTRequired
728 | - RCTTypeSafety
729 | - React-Core
730 | - React-cxxreact
731 | - React-debug
732 | - React-graphics
733 | - React-jsi
734 | - React-jsiexecutor
735 | - React-logger
736 | - React-rendererdebug
737 | - React-runtimescheduler
738 | - React-utils
739 | - ReactCommon/turbomodule/core
740 | - React-Fabric/mounting (0.74.0):
741 | - DoubleConversion
742 | - fmt (= 9.1.0)
743 | - glog
744 | - hermes-engine
745 | - RCT-Folly/Fabric (= 2024.01.01.00)
746 | - RCTRequired
747 | - RCTTypeSafety
748 | - React-Core
749 | - React-cxxreact
750 | - React-debug
751 | - React-graphics
752 | - React-jsi
753 | - React-jsiexecutor
754 | - React-logger
755 | - React-rendererdebug
756 | - React-runtimescheduler
757 | - React-utils
758 | - ReactCommon/turbomodule/core
759 | - React-Fabric/scheduler (0.74.0):
760 | - DoubleConversion
761 | - fmt (= 9.1.0)
762 | - glog
763 | - hermes-engine
764 | - RCT-Folly/Fabric (= 2024.01.01.00)
765 | - RCTRequired
766 | - RCTTypeSafety
767 | - React-Core
768 | - React-cxxreact
769 | - React-debug
770 | - React-graphics
771 | - React-jsi
772 | - React-jsiexecutor
773 | - React-logger
774 | - React-rendererdebug
775 | - React-runtimescheduler
776 | - React-utils
777 | - ReactCommon/turbomodule/core
778 | - React-Fabric/telemetry (0.74.0):
779 | - DoubleConversion
780 | - fmt (= 9.1.0)
781 | - glog
782 | - hermes-engine
783 | - RCT-Folly/Fabric (= 2024.01.01.00)
784 | - RCTRequired
785 | - RCTTypeSafety
786 | - React-Core
787 | - React-cxxreact
788 | - React-debug
789 | - React-graphics
790 | - React-jsi
791 | - React-jsiexecutor
792 | - React-logger
793 | - React-rendererdebug
794 | - React-runtimescheduler
795 | - React-utils
796 | - ReactCommon/turbomodule/core
797 | - React-Fabric/templateprocessor (0.74.0):
798 | - DoubleConversion
799 | - fmt (= 9.1.0)
800 | - glog
801 | - hermes-engine
802 | - RCT-Folly/Fabric (= 2024.01.01.00)
803 | - RCTRequired
804 | - RCTTypeSafety
805 | - React-Core
806 | - React-cxxreact
807 | - React-debug
808 | - React-graphics
809 | - React-jsi
810 | - React-jsiexecutor
811 | - React-logger
812 | - React-rendererdebug
813 | - React-runtimescheduler
814 | - React-utils
815 | - ReactCommon/turbomodule/core
816 | - React-Fabric/textlayoutmanager (0.74.0):
817 | - DoubleConversion
818 | - fmt (= 9.1.0)
819 | - glog
820 | - hermes-engine
821 | - RCT-Folly/Fabric (= 2024.01.01.00)
822 | - RCTRequired
823 | - RCTTypeSafety
824 | - React-Core
825 | - React-cxxreact
826 | - React-debug
827 | - React-Fabric/uimanager
828 | - React-graphics
829 | - React-jsi
830 | - React-jsiexecutor
831 | - React-logger
832 | - React-rendererdebug
833 | - React-runtimescheduler
834 | - React-utils
835 | - ReactCommon/turbomodule/core
836 | - React-Fabric/uimanager (0.74.0):
837 | - DoubleConversion
838 | - fmt (= 9.1.0)
839 | - glog
840 | - hermes-engine
841 | - RCT-Folly/Fabric (= 2024.01.01.00)
842 | - RCTRequired
843 | - RCTTypeSafety
844 | - React-Core
845 | - React-cxxreact
846 | - React-debug
847 | - React-graphics
848 | - React-jsi
849 | - React-jsiexecutor
850 | - React-logger
851 | - React-rendererdebug
852 | - React-runtimescheduler
853 | - React-utils
854 | - ReactCommon/turbomodule/core
855 | - React-FabricImage (0.74.0):
856 | - DoubleConversion
857 | - fmt (= 9.1.0)
858 | - glog
859 | - hermes-engine
860 | - RCT-Folly/Fabric (= 2024.01.01.00)
861 | - RCTRequired (= 0.74.0)
862 | - RCTTypeSafety (= 0.74.0)
863 | - React-Fabric
864 | - React-graphics
865 | - React-ImageManager
866 | - React-jsi
867 | - React-jsiexecutor (= 0.74.0)
868 | - React-logger
869 | - React-rendererdebug
870 | - React-utils
871 | - ReactCommon
872 | - Yoga
873 | - React-featureflags (0.74.0)
874 | - React-graphics (0.74.0):
875 | - DoubleConversion
876 | - fmt (= 9.1.0)
877 | - glog
878 | - RCT-Folly/Fabric (= 2024.01.01.00)
879 | - React-Core/Default (= 0.74.0)
880 | - React-utils
881 | - React-hermes (0.74.0):
882 | - DoubleConversion
883 | - fmt (= 9.1.0)
884 | - glog
885 | - hermes-engine
886 | - RCT-Folly (= 2024.01.01.00)
887 | - React-cxxreact (= 0.74.0)
888 | - React-jsi
889 | - React-jsiexecutor (= 0.74.0)
890 | - React-jsinspector
891 | - React-perflogger (= 0.74.0)
892 | - React-runtimeexecutor
893 | - React-ImageManager (0.74.0):
894 | - glog
895 | - RCT-Folly/Fabric
896 | - React-Core/Default
897 | - React-debug
898 | - React-Fabric
899 | - React-graphics
900 | - React-rendererdebug
901 | - React-utils
902 | - React-jserrorhandler (0.74.0):
903 | - RCT-Folly/Fabric (= 2024.01.01.00)
904 | - React-debug
905 | - React-jsi
906 | - React-Mapbuffer
907 | - React-jsi (0.74.0):
908 | - boost (= 1.83.0)
909 | - DoubleConversion
910 | - fmt (= 9.1.0)
911 | - glog
912 | - hermes-engine
913 | - RCT-Folly (= 2024.01.01.00)
914 | - React-jsiexecutor (0.74.0):
915 | - DoubleConversion
916 | - fmt (= 9.1.0)
917 | - glog
918 | - hermes-engine
919 | - RCT-Folly (= 2024.01.01.00)
920 | - React-cxxreact (= 0.74.0)
921 | - React-jsi (= 0.74.0)
922 | - React-jsinspector
923 | - React-perflogger (= 0.74.0)
924 | - React-jsinspector (0.74.0):
925 | - DoubleConversion
926 | - glog
927 | - hermes-engine
928 | - RCT-Folly (= 2024.01.01.00)
929 | - React-featureflags
930 | - React-jsi
931 | - React-runtimeexecutor (= 0.74.0)
932 | - React-jsitracing (0.74.0):
933 | - React-jsi
934 | - React-logger (0.74.0):
935 | - glog
936 | - React-Mapbuffer (0.74.0):
937 | - glog
938 | - React-debug
939 | - react-native-safe-area-context (4.10.1):
940 | - React-Core
941 | - React-nativeconfig (0.74.0)
942 | - React-NativeModulesApple (0.74.0):
943 | - glog
944 | - hermes-engine
945 | - React-callinvoker
946 | - React-Core
947 | - React-cxxreact
948 | - React-jsi
949 | - React-jsinspector
950 | - React-runtimeexecutor
951 | - ReactCommon/turbomodule/bridging
952 | - ReactCommon/turbomodule/core
953 | - React-perflogger (0.74.0)
954 | - React-RCTActionSheet (0.74.0):
955 | - React-Core/RCTActionSheetHeaders (= 0.74.0)
956 | - React-RCTAnimation (0.74.0):
957 | - RCT-Folly (= 2024.01.01.00)
958 | - RCTTypeSafety
959 | - React-Codegen
960 | - React-Core/RCTAnimationHeaders
961 | - React-jsi
962 | - React-NativeModulesApple
963 | - ReactCommon
964 | - React-RCTAppDelegate (0.74.0):
965 | - RCT-Folly (= 2024.01.01.00)
966 | - RCTRequired
967 | - RCTTypeSafety
968 | - React-Codegen
969 | - React-Core
970 | - React-CoreModules
971 | - React-debug
972 | - React-Fabric
973 | - React-graphics
974 | - React-hermes
975 | - React-nativeconfig
976 | - React-NativeModulesApple
977 | - React-RCTFabric
978 | - React-RCTImage
979 | - React-RCTNetwork
980 | - React-rendererdebug
981 | - React-RuntimeApple
982 | - React-RuntimeCore
983 | - React-RuntimeHermes
984 | - React-runtimescheduler
985 | - React-utils
986 | - ReactCommon
987 | - React-RCTBlob (0.74.0):
988 | - DoubleConversion
989 | - fmt (= 9.1.0)
990 | - hermes-engine
991 | - RCT-Folly (= 2024.01.01.00)
992 | - React-Codegen
993 | - React-Core/RCTBlobHeaders
994 | - React-Core/RCTWebSocket
995 | - React-jsi
996 | - React-jsinspector
997 | - React-NativeModulesApple
998 | - React-RCTNetwork
999 | - ReactCommon
1000 | - React-RCTFabric (0.74.0):
1001 | - glog
1002 | - hermes-engine
1003 | - RCT-Folly/Fabric (= 2024.01.01.00)
1004 | - React-Core
1005 | - React-debug
1006 | - React-Fabric
1007 | - React-FabricImage
1008 | - React-featureflags
1009 | - React-graphics
1010 | - React-ImageManager
1011 | - React-jsi
1012 | - React-jsinspector
1013 | - React-nativeconfig
1014 | - React-RCTImage
1015 | - React-RCTText
1016 | - React-rendererdebug
1017 | - React-runtimescheduler
1018 | - React-utils
1019 | - Yoga
1020 | - React-RCTImage (0.74.0):
1021 | - RCT-Folly (= 2024.01.01.00)
1022 | - RCTTypeSafety
1023 | - React-Codegen
1024 | - React-Core/RCTImageHeaders
1025 | - React-jsi
1026 | - React-NativeModulesApple
1027 | - React-RCTNetwork
1028 | - ReactCommon
1029 | - React-RCTLinking (0.74.0):
1030 | - React-Codegen
1031 | - React-Core/RCTLinkingHeaders (= 0.74.0)
1032 | - React-jsi (= 0.74.0)
1033 | - React-NativeModulesApple
1034 | - ReactCommon
1035 | - ReactCommon/turbomodule/core (= 0.74.0)
1036 | - React-RCTNetwork (0.74.0):
1037 | - RCT-Folly (= 2024.01.01.00)
1038 | - RCTTypeSafety
1039 | - React-Codegen
1040 | - React-Core/RCTNetworkHeaders
1041 | - React-jsi
1042 | - React-NativeModulesApple
1043 | - ReactCommon
1044 | - React-RCTSettings (0.74.0):
1045 | - RCT-Folly (= 2024.01.01.00)
1046 | - RCTTypeSafety
1047 | - React-Codegen
1048 | - React-Core/RCTSettingsHeaders
1049 | - React-jsi
1050 | - React-NativeModulesApple
1051 | - ReactCommon
1052 | - React-RCTText (0.74.0):
1053 | - React-Core/RCTTextHeaders (= 0.74.0)
1054 | - Yoga
1055 | - React-RCTVibration (0.74.0):
1056 | - RCT-Folly (= 2024.01.01.00)
1057 | - React-Codegen
1058 | - React-Core/RCTVibrationHeaders
1059 | - React-jsi
1060 | - React-NativeModulesApple
1061 | - ReactCommon
1062 | - React-rendererdebug (0.74.0):
1063 | - DoubleConversion
1064 | - fmt (= 9.1.0)
1065 | - RCT-Folly (= 2024.01.01.00)
1066 | - React-debug
1067 | - React-rncore (0.74.0)
1068 | - React-RuntimeApple (0.74.0):
1069 | - hermes-engine
1070 | - RCT-Folly/Fabric (= 2024.01.01.00)
1071 | - React-callinvoker
1072 | - React-Core/Default
1073 | - React-CoreModules
1074 | - React-cxxreact
1075 | - React-jserrorhandler
1076 | - React-jsi
1077 | - React-jsiexecutor
1078 | - React-jsinspector
1079 | - React-Mapbuffer
1080 | - React-NativeModulesApple
1081 | - React-RCTFabric
1082 | - React-RuntimeCore
1083 | - React-runtimeexecutor
1084 | - React-RuntimeHermes
1085 | - React-utils
1086 | - React-RuntimeCore (0.74.0):
1087 | - glog
1088 | - hermes-engine
1089 | - RCT-Folly/Fabric (= 2024.01.01.00)
1090 | - React-cxxreact
1091 | - React-featureflags
1092 | - React-jserrorhandler
1093 | - React-jsi
1094 | - React-jsiexecutor
1095 | - React-jsinspector
1096 | - React-runtimeexecutor
1097 | - React-runtimescheduler
1098 | - React-utils
1099 | - React-runtimeexecutor (0.74.0):
1100 | - React-jsi (= 0.74.0)
1101 | - React-RuntimeHermes (0.74.0):
1102 | - hermes-engine
1103 | - RCT-Folly/Fabric (= 2024.01.01.00)
1104 | - React-featureflags
1105 | - React-hermes
1106 | - React-jsi
1107 | - React-jsinspector
1108 | - React-jsitracing
1109 | - React-nativeconfig
1110 | - React-RuntimeCore
1111 | - React-utils
1112 | - React-runtimescheduler (0.74.0):
1113 | - glog
1114 | - hermes-engine
1115 | - RCT-Folly (= 2024.01.01.00)
1116 | - React-callinvoker
1117 | - React-cxxreact
1118 | - React-debug
1119 | - React-featureflags
1120 | - React-jsi
1121 | - React-rendererdebug
1122 | - React-runtimeexecutor
1123 | - React-utils
1124 | - React-utils (0.74.0):
1125 | - glog
1126 | - hermes-engine
1127 | - RCT-Folly (= 2024.01.01.00)
1128 | - React-debug
1129 | - React-jsi (= 0.74.0)
1130 | - ReactCommon (0.74.0):
1131 | - ReactCommon/turbomodule (= 0.74.0)
1132 | - ReactCommon/turbomodule (0.74.0):
1133 | - DoubleConversion
1134 | - fmt (= 9.1.0)
1135 | - glog
1136 | - hermes-engine
1137 | - RCT-Folly (= 2024.01.01.00)
1138 | - React-callinvoker (= 0.74.0)
1139 | - React-cxxreact (= 0.74.0)
1140 | - React-jsi (= 0.74.0)
1141 | - React-logger (= 0.74.0)
1142 | - React-perflogger (= 0.74.0)
1143 | - ReactCommon/turbomodule/bridging (= 0.74.0)
1144 | - ReactCommon/turbomodule/core (= 0.74.0)
1145 | - ReactCommon/turbomodule/bridging (0.74.0):
1146 | - DoubleConversion
1147 | - fmt (= 9.1.0)
1148 | - glog
1149 | - hermes-engine
1150 | - RCT-Folly (= 2024.01.01.00)
1151 | - React-callinvoker (= 0.74.0)
1152 | - React-cxxreact (= 0.74.0)
1153 | - React-jsi (= 0.74.0)
1154 | - React-logger (= 0.74.0)
1155 | - React-perflogger (= 0.74.0)
1156 | - ReactCommon/turbomodule/core (0.74.0):
1157 | - DoubleConversion
1158 | - fmt (= 9.1.0)
1159 | - glog
1160 | - hermes-engine
1161 | - RCT-Folly (= 2024.01.01.00)
1162 | - React-callinvoker (= 0.74.0)
1163 | - React-cxxreact (= 0.74.0)
1164 | - React-debug (= 0.74.0)
1165 | - React-jsi (= 0.74.0)
1166 | - React-logger (= 0.74.0)
1167 | - React-perflogger (= 0.74.0)
1168 | - React-utils (= 0.74.0)
1169 | - ReactNativeKeyboardManager (6.5.16-0):
1170 | - IQKeyboardManagerSwift (= 6.5.16)
1171 | - React-Core
1172 | - React-RCTText
1173 | - RNScreens (3.31.1):
1174 | - DoubleConversion
1175 | - glog
1176 | - hermes-engine
1177 | - RCT-Folly (= 2024.01.01.00)
1178 | - RCTRequired
1179 | - RCTTypeSafety
1180 | - React-Codegen
1181 | - React-Core
1182 | - React-debug
1183 | - React-Fabric
1184 | - React-featureflags
1185 | - React-graphics
1186 | - React-ImageManager
1187 | - React-NativeModulesApple
1188 | - React-RCTFabric
1189 | - React-RCTImage
1190 | - React-rendererdebug
1191 | - React-utils
1192 | - ReactCommon/turbomodule/bridging
1193 | - ReactCommon/turbomodule/core
1194 | - Yoga
1195 | - SocketRocket (0.7.0)
1196 | - Yoga (0.0.0)
1197 |
1198 | DEPENDENCIES:
1199 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
1200 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
1201 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
1202 | - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)
1203 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
1204 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
1205 | - IQKeyboardManagerSwift (from `https://github.com/douglasjunior/IQKeyboardManager.git`, branch `react-native-keyboard-manager`)
1206 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
1207 | - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
1208 | - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
1209 | - RCTRequired (from `../node_modules/react-native/Libraries/Required`)
1210 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
1211 | - React (from `../node_modules/react-native/`)
1212 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
1213 | - React-Codegen (from `build/generated/ios`)
1214 | - React-Core (from `../node_modules/react-native/`)
1215 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
1216 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
1217 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
1218 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
1219 | - React-Fabric (from `../node_modules/react-native/ReactCommon`)
1220 | - React-FabricImage (from `../node_modules/react-native/ReactCommon`)
1221 | - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`)
1222 | - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
1223 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
1224 | - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
1225 | - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
1226 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
1227 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
1228 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)
1229 | - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)
1230 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
1231 | - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
1232 | - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
1233 | - React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
1234 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
1235 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
1236 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
1237 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
1238 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
1239 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
1240 | - React-RCTFabric (from `../node_modules/react-native/React`)
1241 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
1242 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
1243 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
1244 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
1245 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
1246 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
1247 | - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)
1248 | - React-rncore (from `../node_modules/react-native/ReactCommon`)
1249 | - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)
1250 | - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`)
1251 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
1252 | - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`)
1253 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
1254 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
1255 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
1256 | - ReactNativeKeyboardManager (from `../node_modules/react-native-keyboard-manager`)
1257 | - RNScreens (from `../node_modules/react-native-screens`)
1258 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
1259 |
1260 | SPEC REPOS:
1261 | trunk:
1262 | - SocketRocket
1263 |
1264 | EXTERNAL SOURCES:
1265 | boost:
1266 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
1267 | DoubleConversion:
1268 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
1269 | FBLazyVector:
1270 | :path: "../node_modules/react-native/Libraries/FBLazyVector"
1271 | fmt:
1272 | :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec"
1273 | glog:
1274 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
1275 | hermes-engine:
1276 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
1277 | :tag: hermes-2024-02-20-RNv0.74.0-999cfd9979b5f57b1269119679ab8cdf60897de9
1278 | IQKeyboardManagerSwift:
1279 | :branch: react-native-keyboard-manager
1280 | :git: https://github.com/douglasjunior/IQKeyboardManager.git
1281 | RCT-Folly:
1282 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
1283 | RCTDeprecation:
1284 | :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
1285 | RCTRequired:
1286 | :path: "../node_modules/react-native/Libraries/Required"
1287 | RCTTypeSafety:
1288 | :path: "../node_modules/react-native/Libraries/TypeSafety"
1289 | React:
1290 | :path: "../node_modules/react-native/"
1291 | React-callinvoker:
1292 | :path: "../node_modules/react-native/ReactCommon/callinvoker"
1293 | React-Codegen:
1294 | :path: build/generated/ios
1295 | React-Core:
1296 | :path: "../node_modules/react-native/"
1297 | React-CoreModules:
1298 | :path: "../node_modules/react-native/React/CoreModules"
1299 | React-cxxreact:
1300 | :path: "../node_modules/react-native/ReactCommon/cxxreact"
1301 | React-debug:
1302 | :path: "../node_modules/react-native/ReactCommon/react/debug"
1303 | React-Fabric:
1304 | :path: "../node_modules/react-native/ReactCommon"
1305 | React-FabricImage:
1306 | :path: "../node_modules/react-native/ReactCommon"
1307 | React-featureflags:
1308 | :path: "../node_modules/react-native/ReactCommon/react/featureflags"
1309 | React-graphics:
1310 | :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
1311 | React-hermes:
1312 | :path: "../node_modules/react-native/ReactCommon/hermes"
1313 | React-ImageManager:
1314 | :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
1315 | React-jserrorhandler:
1316 | :path: "../node_modules/react-native/ReactCommon/jserrorhandler"
1317 | React-jsi:
1318 | :path: "../node_modules/react-native/ReactCommon/jsi"
1319 | React-jsiexecutor:
1320 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
1321 | React-jsinspector:
1322 | :path: "../node_modules/react-native/ReactCommon/jsinspector-modern"
1323 | React-jsitracing:
1324 | :path: "../node_modules/react-native/ReactCommon/hermes/executor/"
1325 | React-logger:
1326 | :path: "../node_modules/react-native/ReactCommon/logger"
1327 | React-Mapbuffer:
1328 | :path: "../node_modules/react-native/ReactCommon"
1329 | react-native-safe-area-context:
1330 | :path: "../node_modules/react-native-safe-area-context"
1331 | React-nativeconfig:
1332 | :path: "../node_modules/react-native/ReactCommon"
1333 | React-NativeModulesApple:
1334 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
1335 | React-perflogger:
1336 | :path: "../node_modules/react-native/ReactCommon/reactperflogger"
1337 | React-RCTActionSheet:
1338 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
1339 | React-RCTAnimation:
1340 | :path: "../node_modules/react-native/Libraries/NativeAnimation"
1341 | React-RCTAppDelegate:
1342 | :path: "../node_modules/react-native/Libraries/AppDelegate"
1343 | React-RCTBlob:
1344 | :path: "../node_modules/react-native/Libraries/Blob"
1345 | React-RCTFabric:
1346 | :path: "../node_modules/react-native/React"
1347 | React-RCTImage:
1348 | :path: "../node_modules/react-native/Libraries/Image"
1349 | React-RCTLinking:
1350 | :path: "../node_modules/react-native/Libraries/LinkingIOS"
1351 | React-RCTNetwork:
1352 | :path: "../node_modules/react-native/Libraries/Network"
1353 | React-RCTSettings:
1354 | :path: "../node_modules/react-native/Libraries/Settings"
1355 | React-RCTText:
1356 | :path: "../node_modules/react-native/Libraries/Text"
1357 | React-RCTVibration:
1358 | :path: "../node_modules/react-native/Libraries/Vibration"
1359 | React-rendererdebug:
1360 | :path: "../node_modules/react-native/ReactCommon/react/renderer/debug"
1361 | React-rncore:
1362 | :path: "../node_modules/react-native/ReactCommon"
1363 | React-RuntimeApple:
1364 | :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios"
1365 | React-RuntimeCore:
1366 | :path: "../node_modules/react-native/ReactCommon/react/runtime"
1367 | React-runtimeexecutor:
1368 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
1369 | React-RuntimeHermes:
1370 | :path: "../node_modules/react-native/ReactCommon/react/runtime"
1371 | React-runtimescheduler:
1372 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
1373 | React-utils:
1374 | :path: "../node_modules/react-native/ReactCommon/react/utils"
1375 | ReactCommon:
1376 | :path: "../node_modules/react-native/ReactCommon"
1377 | ReactNativeKeyboardManager:
1378 | :path: "../node_modules/react-native-keyboard-manager"
1379 | RNScreens:
1380 | :path: "../node_modules/react-native-screens"
1381 | Yoga:
1382 | :path: "../node_modules/react-native/ReactCommon/yoga"
1383 |
1384 | CHECKOUT OPTIONS:
1385 | IQKeyboardManagerSwift:
1386 | :commit: 718cbed77cdd5ecd8b779afe543ba5b2df45b40a
1387 | :git: https://github.com/douglasjunior/IQKeyboardManager.git
1388 |
1389 | SPEC CHECKSUMS:
1390 | boost: d3f49c53809116a5d38da093a8aa78bf551aed09
1391 | DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
1392 | FBLazyVector: 026c8f4ae67b06e088ae01baa2271ef8a26c0e8c
1393 | fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120
1394 | glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2
1395 | hermes-engine: 6eae7edb2f563ee41d7c1f91f4f2e57c26d8a5c3
1396 | IQKeyboardManagerSwift: 90ba81812fbbd6694924a95a271fa3affdf04a14
1397 | RCT-Folly: 045d6ecaa59d826c5736dfba0b2f4083ff8d79df
1398 | RCTDeprecation: 3ca8b6c36bfb302e1895b72cfe7db0de0c92cd47
1399 | RCTRequired: 9fc183af555fd0c89a366c34c1ae70b7e03b1dc5
1400 | RCTTypeSafety: db1dd5ad1081a5e160d30bb29ef922693d5ac4b1
1401 | React: 8650d592d90b99097504b8dcfebab883972aed71
1402 | React-callinvoker: 6bb8b399ab8cec59e52458c3a592aa1fca130b68
1403 | React-Codegen: 7014b8564cb45f51d01c950256456e20f679d42e
1404 | React-Core: 119ddf031a18926c2f59849bedcc83c1ba347419
1405 | React-CoreModules: 087c24b785afc79d29d23bffe7b02f79bb00cf76
1406 | React-cxxreact: 67a110c97ed6a53b393be3c90fc3f0b482770bd1
1407 | React-debug: 41175f3e30dfa8af6eab2631261e1eac26307f9f
1408 | React-Fabric: 235d71c7d7973fb5c3f099f2962d6b5362be6107
1409 | React-FabricImage: 44f4ee8c9331688ab5e907a40cbd49010b05e687
1410 | React-featureflags: 5e7e78c607661fe7f72bc38c6f03736e0876753a
1411 | React-graphics: 354adf8693bf849e696bf5096abc8cdc22c78ab4
1412 | React-hermes: 17c369e15cfb535d7bc880d432e0e291c81d10d9
1413 | React-ImageManager: 74e0898e24b12c45c40019b8558a1310d0b2a47c
1414 | React-jserrorhandler: 33cb327f5c6e1571b362f1a9c762ff839a5adb15
1415 | React-jsi: 1e0be0c7526a8fdd3b9e8c086bddcddbad263cd5
1416 | React-jsiexecutor: 04c1e790290e8cc3cd18e59c9cc5bdd18af325ef
1417 | React-jsinspector: 5daae7b6729d84bd61026899a6f664bdcff3ac28
1418 | React-jsitracing: 36a2bbc272300313653d980de5ab700ec86c534a
1419 | React-logger: 03f2f7b955cfe24593a2b8c9705c23e142d1ad24
1420 | React-Mapbuffer: 5e05d78fe6505f4a054b86f415733d4ad02dd314
1421 | react-native-safe-area-context: dcab599c527c2d7de2d76507a523d20a0b83823d
1422 | React-nativeconfig: 951ec32f632e81cbd7d40aebb3211313251c092e
1423 | React-NativeModulesApple: 0b3a42ca90069119ef79d8b2327d01441d71abd4
1424 | React-perflogger: 271f1111779fef70f9502d1d38da5132e5585230
1425 | React-RCTActionSheet: 5d6fb9adb11ab1bfbce6695a2b785767e4658c53
1426 | React-RCTAnimation: 86ace32c56e69b3822e7e5184ea83a79d47fc7b9
1427 | React-RCTAppDelegate: 74b45c4e3c1c23db88385d74cf4f5a8500694527
1428 | React-RCTBlob: fb91c62a549f004e251235c65c665c6890a923a3
1429 | React-RCTFabric: af6b9bc4aa9dfa0af1a1bcf5d8e5c5b1f17ae99c
1430 | React-RCTImage: b482f07cfdbe8e413edbf9d85953cecdb569472c
1431 | React-RCTLinking: fbd73a66cab34df69b2389c17f200e4722890fd9
1432 | React-RCTNetwork: fbdd716fbd6e53feb6d8e00eeb85e8184ad42ac8
1433 | React-RCTSettings: 11c3051b965593988298a3f5fb39e23bf6f7df9f
1434 | React-RCTText: f240b4d39c36c295204d29e7634a2fac450b6d29
1435 | React-RCTVibration: 1750f80b39e1ad9b4f509f4fdf19a803f7ab0d38
1436 | React-rendererdebug: a89ffa25c7670de8f22e0b322dfdd8333bc0d126
1437 | React-rncore: a3ab9e7271a5c692918e2a483beb900ff0a51169
1438 | React-RuntimeApple: cdc563e811785f675925032d3bc4092a2aaa0b82
1439 | React-RuntimeCore: f4af3a86a6a69d31721067f17196a582da25d2fc
1440 | React-runtimeexecutor: 4471221991b6e518466a0422fbeb2158c07c36e1
1441 | React-RuntimeHermes: 3d9f53ac3330bb71d42f2acb9a3061a0b992be5c
1442 | React-runtimescheduler: 7fe561d179b97cecd0c2bec0bbd08f9fd8581c26
1443 | React-utils: f013537c3371270d2095bff1d594d00d4bc9261b
1444 | ReactCommon: 2cde697fd80bd31da1d6448d25a5803088585219
1445 | ReactNativeKeyboardManager: 704d89bde3cb1e0f432bc273a44eec96eab9d90f
1446 | RNScreens: b32a9ff15bea7fcdbe5dff6477bc503f792b1208
1447 | SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
1448 | Yoga: 56f906bf6c11c931588191dde1229fd3e4e3d557
1449 |
1450 | PODFILE CHECKSUM: 23adb97c732c72bd2c9eafb316dd8826f75b1ef1
1451 |
1452 | COCOAPODS: 1.14.2
1453 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 54;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 00E356F31AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests.m */; };
11 | 0C80B921A6F3F58F76C31292 /* libPods-ReactNativeKeyboardManagerSample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-ReactNativeKeyboardManagerSample.a */; };
12 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
14 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
15 | 7699B88040F8A987B510C191 /* libPods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.a */; };
16 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXContainerItemProxy section */
20 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
21 | isa = PBXContainerItemProxy;
22 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
23 | proxyType = 1;
24 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
25 | remoteInfo = ReactNativeKeyboardManagerSample;
26 | };
27 | /* End PBXContainerItemProxy section */
28 |
29 | /* Begin PBXFileReference section */
30 | 00E356EE1AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ReactNativeKeyboardManagerSampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
31 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
32 | 00E356F21AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReactNativeKeyboardManagerSampleTests.m; sourceTree = ""; };
33 | 13B07F961A680F5B00A75B9A /* ReactNativeKeyboardManagerSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReactNativeKeyboardManagerSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
34 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ReactNativeKeyboardManagerSample/AppDelegate.h; sourceTree = ""; };
35 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = ReactNativeKeyboardManagerSample/AppDelegate.mm; sourceTree = ""; };
36 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ReactNativeKeyboardManagerSample/Images.xcassets; sourceTree = ""; };
37 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ReactNativeKeyboardManagerSample/Info.plist; sourceTree = ""; };
38 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ReactNativeKeyboardManagerSample/main.m; sourceTree = ""; };
39 | 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = ReactNativeKeyboardManagerSample/PrivacyInfo.xcprivacy; sourceTree = ""; };
40 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
41 | 3B4392A12AC88292D35C810B /* Pods-ReactNativeKeyboardManagerSample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeKeyboardManagerSample.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeKeyboardManagerSample/Pods-ReactNativeKeyboardManagerSample.debug.xcconfig"; sourceTree = ""; };
42 | 5709B34CF0A7D63546082F79 /* Pods-ReactNativeKeyboardManagerSample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeKeyboardManagerSample.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeKeyboardManagerSample/Pods-ReactNativeKeyboardManagerSample.release.xcconfig"; sourceTree = ""; };
43 | 5B7EB9410499542E8C5724F5 /* Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.debug.xcconfig"; path = "Target Support Files/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.debug.xcconfig"; sourceTree = ""; };
44 | 5DCACB8F33CDC322A6C60F78 /* libPods-ReactNativeKeyboardManagerSample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNativeKeyboardManagerSample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
45 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ReactNativeKeyboardManagerSample/LaunchScreen.storyboard; sourceTree = ""; };
46 | 89C6BE57DB24E9ADA2F236DE /* Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.release.xcconfig"; path = "Target Support Files/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.release.xcconfig"; sourceTree = ""; };
47 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
48 | /* End PBXFileReference section */
49 |
50 | /* Begin PBXFrameworksBuildPhase section */
51 | 00E356EB1AD99517003FC87E /* Frameworks */ = {
52 | isa = PBXFrameworksBuildPhase;
53 | buildActionMask = 2147483647;
54 | files = (
55 | 7699B88040F8A987B510C191 /* libPods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.a in Frameworks */,
56 | );
57 | runOnlyForDeploymentPostprocessing = 0;
58 | };
59 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
60 | isa = PBXFrameworksBuildPhase;
61 | buildActionMask = 2147483647;
62 | files = (
63 | 0C80B921A6F3F58F76C31292 /* libPods-ReactNativeKeyboardManagerSample.a in Frameworks */,
64 | );
65 | runOnlyForDeploymentPostprocessing = 0;
66 | };
67 | /* End PBXFrameworksBuildPhase section */
68 |
69 | /* Begin PBXGroup section */
70 | 00E356EF1AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests */ = {
71 | isa = PBXGroup;
72 | children = (
73 | 00E356F21AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests.m */,
74 | 00E356F01AD99517003FC87E /* Supporting Files */,
75 | );
76 | path = ReactNativeKeyboardManagerSampleTests;
77 | sourceTree = "";
78 | };
79 | 00E356F01AD99517003FC87E /* Supporting Files */ = {
80 | isa = PBXGroup;
81 | children = (
82 | 00E356F11AD99517003FC87E /* Info.plist */,
83 | );
84 | name = "Supporting Files";
85 | sourceTree = "";
86 | };
87 | 13B07FAE1A68108700A75B9A /* ReactNativeKeyboardManagerSample */ = {
88 | isa = PBXGroup;
89 | children = (
90 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
91 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */,
92 | 13B07FB51A68108700A75B9A /* Images.xcassets */,
93 | 13B07FB61A68108700A75B9A /* Info.plist */,
94 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
95 | 13B07FB71A68108700A75B9A /* main.m */,
96 | 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
97 | );
98 | name = ReactNativeKeyboardManagerSample;
99 | sourceTree = "";
100 | };
101 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
102 | isa = PBXGroup;
103 | children = (
104 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
105 | 5DCACB8F33CDC322A6C60F78 /* libPods-ReactNativeKeyboardManagerSample.a */,
106 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.a */,
107 | );
108 | name = Frameworks;
109 | sourceTree = "";
110 | };
111 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
112 | isa = PBXGroup;
113 | children = (
114 | );
115 | name = Libraries;
116 | sourceTree = "";
117 | };
118 | 83CBB9F61A601CBA00E9B192 = {
119 | isa = PBXGroup;
120 | children = (
121 | 13B07FAE1A68108700A75B9A /* ReactNativeKeyboardManagerSample */,
122 | 832341AE1AAA6A7D00B99B32 /* Libraries */,
123 | 00E356EF1AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests */,
124 | 83CBBA001A601CBA00E9B192 /* Products */,
125 | 2D16E6871FA4F8E400B85C8A /* Frameworks */,
126 | BBD78D7AC51CEA395F1C20DB /* Pods */,
127 | );
128 | indentWidth = 2;
129 | sourceTree = "";
130 | tabWidth = 2;
131 | usesTabs = 0;
132 | };
133 | 83CBBA001A601CBA00E9B192 /* Products */ = {
134 | isa = PBXGroup;
135 | children = (
136 | 13B07F961A680F5B00A75B9A /* ReactNativeKeyboardManagerSample.app */,
137 | 00E356EE1AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests.xctest */,
138 | );
139 | name = Products;
140 | sourceTree = "";
141 | };
142 | BBD78D7AC51CEA395F1C20DB /* Pods */ = {
143 | isa = PBXGroup;
144 | children = (
145 | 3B4392A12AC88292D35C810B /* Pods-ReactNativeKeyboardManagerSample.debug.xcconfig */,
146 | 5709B34CF0A7D63546082F79 /* Pods-ReactNativeKeyboardManagerSample.release.xcconfig */,
147 | 5B7EB9410499542E8C5724F5 /* Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.debug.xcconfig */,
148 | 89C6BE57DB24E9ADA2F236DE /* Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.release.xcconfig */,
149 | );
150 | path = Pods;
151 | sourceTree = "";
152 | };
153 | /* End PBXGroup section */
154 |
155 | /* Begin PBXNativeTarget section */
156 | 00E356ED1AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests */ = {
157 | isa = PBXNativeTarget;
158 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ReactNativeKeyboardManagerSampleTests" */;
159 | buildPhases = (
160 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
161 | 00E356EA1AD99517003FC87E /* Sources */,
162 | 00E356EB1AD99517003FC87E /* Frameworks */,
163 | 00E356EC1AD99517003FC87E /* Resources */,
164 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
165 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
166 | );
167 | buildRules = (
168 | );
169 | dependencies = (
170 | 00E356F51AD99517003FC87E /* PBXTargetDependency */,
171 | );
172 | name = ReactNativeKeyboardManagerSampleTests;
173 | productName = ReactNativeKeyboardManagerSampleTests;
174 | productReference = 00E356EE1AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests.xctest */;
175 | productType = "com.apple.product-type.bundle.unit-test";
176 | };
177 | 13B07F861A680F5B00A75B9A /* ReactNativeKeyboardManagerSample */ = {
178 | isa = PBXNativeTarget;
179 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactNativeKeyboardManagerSample" */;
180 | buildPhases = (
181 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
182 | 13B07F871A680F5B00A75B9A /* Sources */,
183 | 13B07F8C1A680F5B00A75B9A /* Frameworks */,
184 | 13B07F8E1A680F5B00A75B9A /* Resources */,
185 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
186 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
187 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
188 | );
189 | buildRules = (
190 | );
191 | dependencies = (
192 | );
193 | name = ReactNativeKeyboardManagerSample;
194 | productName = ReactNativeKeyboardManagerSample;
195 | productReference = 13B07F961A680F5B00A75B9A /* ReactNativeKeyboardManagerSample.app */;
196 | productType = "com.apple.product-type.application";
197 | };
198 | /* End PBXNativeTarget section */
199 |
200 | /* Begin PBXProject section */
201 | 83CBB9F71A601CBA00E9B192 /* Project object */ = {
202 | isa = PBXProject;
203 | attributes = {
204 | LastUpgradeCheck = 1210;
205 | TargetAttributes = {
206 | 00E356ED1AD99517003FC87E = {
207 | CreatedOnToolsVersion = 6.2;
208 | TestTargetID = 13B07F861A680F5B00A75B9A;
209 | };
210 | 13B07F861A680F5B00A75B9A = {
211 | LastSwiftMigration = 1120;
212 | };
213 | };
214 | };
215 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactNativeKeyboardManagerSample" */;
216 | compatibilityVersion = "Xcode 12.0";
217 | developmentRegion = en;
218 | hasScannedForEncodings = 0;
219 | knownRegions = (
220 | en,
221 | Base,
222 | );
223 | mainGroup = 83CBB9F61A601CBA00E9B192;
224 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
225 | projectDirPath = "";
226 | projectRoot = "";
227 | targets = (
228 | 13B07F861A680F5B00A75B9A /* ReactNativeKeyboardManagerSample */,
229 | 00E356ED1AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests */,
230 | );
231 | };
232 | /* End PBXProject section */
233 |
234 | /* Begin PBXResourcesBuildPhase section */
235 | 00E356EC1AD99517003FC87E /* Resources */ = {
236 | isa = PBXResourcesBuildPhase;
237 | buildActionMask = 2147483647;
238 | files = (
239 | );
240 | runOnlyForDeploymentPostprocessing = 0;
241 | };
242 | 13B07F8E1A680F5B00A75B9A /* Resources */ = {
243 | isa = PBXResourcesBuildPhase;
244 | buildActionMask = 2147483647;
245 | files = (
246 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
247 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
248 | );
249 | runOnlyForDeploymentPostprocessing = 0;
250 | };
251 | /* End PBXResourcesBuildPhase section */
252 |
253 | /* Begin PBXShellScriptBuildPhase section */
254 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
255 | isa = PBXShellScriptBuildPhase;
256 | buildActionMask = 2147483647;
257 | files = (
258 | );
259 | inputPaths = (
260 | "$(SRCROOT)/.xcode.env.local",
261 | "$(SRCROOT)/.xcode.env",
262 | );
263 | name = "Bundle React Native code and images";
264 | outputPaths = (
265 | );
266 | runOnlyForDeploymentPostprocessing = 0;
267 | shellPath = /bin/sh;
268 | shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
269 | };
270 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
271 | isa = PBXShellScriptBuildPhase;
272 | buildActionMask = 2147483647;
273 | files = (
274 | );
275 | inputFileListPaths = (
276 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample/Pods-ReactNativeKeyboardManagerSample-frameworks-${CONFIGURATION}-input-files.xcfilelist",
277 | );
278 | name = "[CP] Embed Pods Frameworks";
279 | outputFileListPaths = (
280 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample/Pods-ReactNativeKeyboardManagerSample-frameworks-${CONFIGURATION}-output-files.xcfilelist",
281 | );
282 | runOnlyForDeploymentPostprocessing = 0;
283 | shellPath = /bin/sh;
284 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample/Pods-ReactNativeKeyboardManagerSample-frameworks.sh\"\n";
285 | showEnvVarsInLog = 0;
286 | };
287 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = {
288 | isa = PBXShellScriptBuildPhase;
289 | buildActionMask = 2147483647;
290 | files = (
291 | );
292 | inputFileListPaths = (
293 | );
294 | inputPaths = (
295 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
296 | "${PODS_ROOT}/Manifest.lock",
297 | );
298 | name = "[CP] Check Pods Manifest.lock";
299 | outputFileListPaths = (
300 | );
301 | outputPaths = (
302 | "$(DERIVED_FILE_DIR)/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests-checkManifestLockResult.txt",
303 | );
304 | runOnlyForDeploymentPostprocessing = 0;
305 | shellPath = /bin/sh;
306 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
307 | showEnvVarsInLog = 0;
308 | };
309 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
310 | isa = PBXShellScriptBuildPhase;
311 | buildActionMask = 2147483647;
312 | files = (
313 | );
314 | inputFileListPaths = (
315 | );
316 | inputPaths = (
317 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
318 | "${PODS_ROOT}/Manifest.lock",
319 | );
320 | name = "[CP] Check Pods Manifest.lock";
321 | outputFileListPaths = (
322 | );
323 | outputPaths = (
324 | "$(DERIVED_FILE_DIR)/Pods-ReactNativeKeyboardManagerSample-checkManifestLockResult.txt",
325 | );
326 | runOnlyForDeploymentPostprocessing = 0;
327 | shellPath = /bin/sh;
328 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
329 | showEnvVarsInLog = 0;
330 | };
331 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = {
332 | isa = PBXShellScriptBuildPhase;
333 | buildActionMask = 2147483647;
334 | files = (
335 | );
336 | inputFileListPaths = (
337 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
338 | );
339 | name = "[CP] Embed Pods Frameworks";
340 | outputFileListPaths = (
341 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
342 | );
343 | runOnlyForDeploymentPostprocessing = 0;
344 | shellPath = /bin/sh;
345 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests-frameworks.sh\"\n";
346 | showEnvVarsInLog = 0;
347 | };
348 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
349 | isa = PBXShellScriptBuildPhase;
350 | buildActionMask = 2147483647;
351 | files = (
352 | );
353 | inputFileListPaths = (
354 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample/Pods-ReactNativeKeyboardManagerSample-resources-${CONFIGURATION}-input-files.xcfilelist",
355 | );
356 | name = "[CP] Copy Pods Resources";
357 | outputFileListPaths = (
358 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample/Pods-ReactNativeKeyboardManagerSample-resources-${CONFIGURATION}-output-files.xcfilelist",
359 | );
360 | runOnlyForDeploymentPostprocessing = 0;
361 | shellPath = /bin/sh;
362 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample/Pods-ReactNativeKeyboardManagerSample-resources.sh\"\n";
363 | showEnvVarsInLog = 0;
364 | };
365 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
366 | isa = PBXShellScriptBuildPhase;
367 | buildActionMask = 2147483647;
368 | files = (
369 | );
370 | inputFileListPaths = (
371 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests-resources-${CONFIGURATION}-input-files.xcfilelist",
372 | );
373 | name = "[CP] Copy Pods Resources";
374 | outputFileListPaths = (
375 | "${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests-resources-${CONFIGURATION}-output-files.xcfilelist",
376 | );
377 | runOnlyForDeploymentPostprocessing = 0;
378 | shellPath = /bin/sh;
379 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests/Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests-resources.sh\"\n";
380 | showEnvVarsInLog = 0;
381 | };
382 | /* End PBXShellScriptBuildPhase section */
383 |
384 | /* Begin PBXSourcesBuildPhase section */
385 | 00E356EA1AD99517003FC87E /* Sources */ = {
386 | isa = PBXSourcesBuildPhase;
387 | buildActionMask = 2147483647;
388 | files = (
389 | 00E356F31AD99517003FC87E /* ReactNativeKeyboardManagerSampleTests.m in Sources */,
390 | );
391 | runOnlyForDeploymentPostprocessing = 0;
392 | };
393 | 13B07F871A680F5B00A75B9A /* Sources */ = {
394 | isa = PBXSourcesBuildPhase;
395 | buildActionMask = 2147483647;
396 | files = (
397 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
398 | 13B07FC11A68108700A75B9A /* main.m in Sources */,
399 | );
400 | runOnlyForDeploymentPostprocessing = 0;
401 | };
402 | /* End PBXSourcesBuildPhase section */
403 |
404 | /* Begin PBXTargetDependency section */
405 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
406 | isa = PBXTargetDependency;
407 | target = 13B07F861A680F5B00A75B9A /* ReactNativeKeyboardManagerSample */;
408 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
409 | };
410 | /* End PBXTargetDependency section */
411 |
412 | /* Begin XCBuildConfiguration section */
413 | 00E356F61AD99517003FC87E /* Debug */ = {
414 | isa = XCBuildConfiguration;
415 | baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.debug.xcconfig */;
416 | buildSettings = {
417 | BUNDLE_LOADER = "$(TEST_HOST)";
418 | GCC_PREPROCESSOR_DEFINITIONS = (
419 | "DEBUG=1",
420 | "$(inherited)",
421 | );
422 | INFOPLIST_FILE = ReactNativeKeyboardManagerSampleTests/Info.plist;
423 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
424 | LD_RUNPATH_SEARCH_PATHS = (
425 | "$(inherited)",
426 | "@executable_path/Frameworks",
427 | "@loader_path/Frameworks",
428 | );
429 | OTHER_LDFLAGS = (
430 | "-ObjC",
431 | "-lc++",
432 | "$(inherited)",
433 | );
434 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
435 | PRODUCT_NAME = "$(TARGET_NAME)";
436 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ReactNativeKeyboardManagerSample.app/ReactNativeKeyboardManagerSample";
437 | };
438 | name = Debug;
439 | };
440 | 00E356F71AD99517003FC87E /* Release */ = {
441 | isa = XCBuildConfiguration;
442 | baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-ReactNativeKeyboardManagerSample-ReactNativeKeyboardManagerSampleTests.release.xcconfig */;
443 | buildSettings = {
444 | BUNDLE_LOADER = "$(TEST_HOST)";
445 | COPY_PHASE_STRIP = NO;
446 | INFOPLIST_FILE = ReactNativeKeyboardManagerSampleTests/Info.plist;
447 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
448 | LD_RUNPATH_SEARCH_PATHS = (
449 | "$(inherited)",
450 | "@executable_path/Frameworks",
451 | "@loader_path/Frameworks",
452 | );
453 | OTHER_LDFLAGS = (
454 | "-ObjC",
455 | "-lc++",
456 | "$(inherited)",
457 | );
458 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
459 | PRODUCT_NAME = "$(TARGET_NAME)";
460 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ReactNativeKeyboardManagerSample.app/ReactNativeKeyboardManagerSample";
461 | };
462 | name = Release;
463 | };
464 | 13B07F941A680F5B00A75B9A /* Debug */ = {
465 | isa = XCBuildConfiguration;
466 | baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-ReactNativeKeyboardManagerSample.debug.xcconfig */;
467 | buildSettings = {
468 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
469 | CLANG_ENABLE_MODULES = YES;
470 | CURRENT_PROJECT_VERSION = 1;
471 | ENABLE_BITCODE = NO;
472 | INFOPLIST_FILE = ReactNativeKeyboardManagerSample/Info.plist;
473 | LD_RUNPATH_SEARCH_PATHS = (
474 | "$(inherited)",
475 | "@executable_path/Frameworks",
476 | );
477 | MARKETING_VERSION = 1.0;
478 | OTHER_LDFLAGS = (
479 | "$(inherited)",
480 | "-ObjC",
481 | "-lc++",
482 | );
483 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
484 | PRODUCT_NAME = ReactNativeKeyboardManagerSample;
485 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
486 | SWIFT_VERSION = 5.0;
487 | VERSIONING_SYSTEM = "apple-generic";
488 | };
489 | name = Debug;
490 | };
491 | 13B07F951A680F5B00A75B9A /* Release */ = {
492 | isa = XCBuildConfiguration;
493 | baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-ReactNativeKeyboardManagerSample.release.xcconfig */;
494 | buildSettings = {
495 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
496 | CLANG_ENABLE_MODULES = YES;
497 | CURRENT_PROJECT_VERSION = 1;
498 | INFOPLIST_FILE = ReactNativeKeyboardManagerSample/Info.plist;
499 | LD_RUNPATH_SEARCH_PATHS = (
500 | "$(inherited)",
501 | "@executable_path/Frameworks",
502 | );
503 | MARKETING_VERSION = 1.0;
504 | OTHER_LDFLAGS = (
505 | "$(inherited)",
506 | "-ObjC",
507 | "-lc++",
508 | );
509 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
510 | PRODUCT_NAME = ReactNativeKeyboardManagerSample;
511 | SWIFT_VERSION = 5.0;
512 | VERSIONING_SYSTEM = "apple-generic";
513 | };
514 | name = Release;
515 | };
516 | 83CBBA201A601CBA00E9B192 /* Debug */ = {
517 | isa = XCBuildConfiguration;
518 | buildSettings = {
519 | ALWAYS_SEARCH_USER_PATHS = NO;
520 | CC = "";
521 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
522 | CLANG_CXX_LANGUAGE_STANDARD = "c++20";
523 | CLANG_CXX_LIBRARY = "libc++";
524 | CLANG_ENABLE_MODULES = YES;
525 | CLANG_ENABLE_OBJC_ARC = YES;
526 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
527 | CLANG_WARN_BOOL_CONVERSION = YES;
528 | CLANG_WARN_COMMA = YES;
529 | CLANG_WARN_CONSTANT_CONVERSION = YES;
530 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
531 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
532 | CLANG_WARN_EMPTY_BODY = YES;
533 | CLANG_WARN_ENUM_CONVERSION = YES;
534 | CLANG_WARN_INFINITE_RECURSION = YES;
535 | CLANG_WARN_INT_CONVERSION = YES;
536 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
537 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
538 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
539 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
540 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
541 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
542 | CLANG_WARN_STRICT_PROTOTYPES = YES;
543 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
544 | CLANG_WARN_UNREACHABLE_CODE = YES;
545 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
546 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
547 | COPY_PHASE_STRIP = NO;
548 | CXX = "";
549 | ENABLE_STRICT_OBJC_MSGSEND = YES;
550 | ENABLE_TESTABILITY = YES;
551 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
552 | GCC_C_LANGUAGE_STANDARD = gnu99;
553 | GCC_DYNAMIC_NO_PIC = NO;
554 | GCC_NO_COMMON_BLOCKS = YES;
555 | GCC_OPTIMIZATION_LEVEL = 0;
556 | GCC_PREPROCESSOR_DEFINITIONS = (
557 | "DEBUG=1",
558 | "$(inherited)",
559 | );
560 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
561 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
562 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
563 | GCC_WARN_UNDECLARED_SELECTOR = YES;
564 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
565 | GCC_WARN_UNUSED_FUNCTION = YES;
566 | GCC_WARN_UNUSED_VARIABLE = YES;
567 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
568 | LD = "";
569 | LDPLUSPLUS = "";
570 | LD_RUNPATH_SEARCH_PATHS = (
571 | /usr/lib/swift,
572 | "$(inherited)",
573 | );
574 | LIBRARY_SEARCH_PATHS = (
575 | "\"$(SDKROOT)/usr/lib/swift\"",
576 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
577 | "\"$(inherited)\"",
578 | );
579 | MTL_ENABLE_DEBUG_INFO = YES;
580 | ONLY_ACTIVE_ARCH = YES;
581 | OTHER_CPLUSPLUSFLAGS = (
582 | "$(OTHER_CFLAGS)",
583 | "-DFOLLY_NO_CONFIG",
584 | "-DFOLLY_MOBILE=1",
585 | "-DFOLLY_USE_LIBCPP=1",
586 | "-DFOLLY_CFG_NO_COROUTINES=1",
587 | "-DFOLLY_HAVE_CLOCK_GETTIME=1",
588 | );
589 | OTHER_LDFLAGS = (
590 | "$(inherited)",
591 | " ",
592 | );
593 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
594 | SDKROOT = iphoneos;
595 | USE_HERMES = true;
596 | };
597 | name = Debug;
598 | };
599 | 83CBBA211A601CBA00E9B192 /* Release */ = {
600 | isa = XCBuildConfiguration;
601 | buildSettings = {
602 | ALWAYS_SEARCH_USER_PATHS = NO;
603 | CC = "";
604 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
605 | CLANG_CXX_LANGUAGE_STANDARD = "c++20";
606 | CLANG_CXX_LIBRARY = "libc++";
607 | CLANG_ENABLE_MODULES = YES;
608 | CLANG_ENABLE_OBJC_ARC = YES;
609 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
610 | CLANG_WARN_BOOL_CONVERSION = YES;
611 | CLANG_WARN_COMMA = YES;
612 | CLANG_WARN_CONSTANT_CONVERSION = YES;
613 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
614 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
615 | CLANG_WARN_EMPTY_BODY = YES;
616 | CLANG_WARN_ENUM_CONVERSION = YES;
617 | CLANG_WARN_INFINITE_RECURSION = YES;
618 | CLANG_WARN_INT_CONVERSION = YES;
619 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
620 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
621 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
622 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
623 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
624 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
625 | CLANG_WARN_STRICT_PROTOTYPES = YES;
626 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
627 | CLANG_WARN_UNREACHABLE_CODE = YES;
628 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
629 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
630 | COPY_PHASE_STRIP = YES;
631 | CXX = "";
632 | ENABLE_NS_ASSERTIONS = NO;
633 | ENABLE_STRICT_OBJC_MSGSEND = YES;
634 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
635 | GCC_C_LANGUAGE_STANDARD = gnu99;
636 | GCC_NO_COMMON_BLOCKS = YES;
637 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
638 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
639 | GCC_WARN_UNDECLARED_SELECTOR = YES;
640 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
641 | GCC_WARN_UNUSED_FUNCTION = YES;
642 | GCC_WARN_UNUSED_VARIABLE = YES;
643 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
644 | LD = "";
645 | LDPLUSPLUS = "";
646 | LD_RUNPATH_SEARCH_PATHS = (
647 | /usr/lib/swift,
648 | "$(inherited)",
649 | );
650 | LIBRARY_SEARCH_PATHS = (
651 | "\"$(SDKROOT)/usr/lib/swift\"",
652 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
653 | "\"$(inherited)\"",
654 | );
655 | MTL_ENABLE_DEBUG_INFO = NO;
656 | OTHER_CPLUSPLUSFLAGS = (
657 | "$(OTHER_CFLAGS)",
658 | "-DFOLLY_NO_CONFIG",
659 | "-DFOLLY_MOBILE=1",
660 | "-DFOLLY_USE_LIBCPP=1",
661 | "-DFOLLY_CFG_NO_COROUTINES=1",
662 | "-DFOLLY_HAVE_CLOCK_GETTIME=1",
663 | );
664 | OTHER_LDFLAGS = (
665 | "$(inherited)",
666 | " ",
667 | );
668 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
669 | SDKROOT = iphoneos;
670 | USE_HERMES = true;
671 | VALIDATE_PRODUCT = YES;
672 | };
673 | name = Release;
674 | };
675 | /* End XCBuildConfiguration section */
676 |
677 | /* Begin XCConfigurationList section */
678 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ReactNativeKeyboardManagerSampleTests" */ = {
679 | isa = XCConfigurationList;
680 | buildConfigurations = (
681 | 00E356F61AD99517003FC87E /* Debug */,
682 | 00E356F71AD99517003FC87E /* Release */,
683 | );
684 | defaultConfigurationIsVisible = 0;
685 | defaultConfigurationName = Release;
686 | };
687 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactNativeKeyboardManagerSample" */ = {
688 | isa = XCConfigurationList;
689 | buildConfigurations = (
690 | 13B07F941A680F5B00A75B9A /* Debug */,
691 | 13B07F951A680F5B00A75B9A /* Release */,
692 | );
693 | defaultConfigurationIsVisible = 0;
694 | defaultConfigurationName = Release;
695 | };
696 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactNativeKeyboardManagerSample" */ = {
697 | isa = XCConfigurationList;
698 | buildConfigurations = (
699 | 83CBBA201A601CBA00E9B192 /* Debug */,
700 | 83CBBA211A601CBA00E9B192 /* Release */,
701 | );
702 | defaultConfigurationIsVisible = 0;
703 | defaultConfigurationName = Release;
704 | };
705 | /* End XCConfigurationList section */
706 | };
707 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
708 | }
709 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample.xcodeproj/xcshareddata/xcschemes/ReactNativeKeyboardManagerSample.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
53 |
55 |
61 |
62 |
63 |
64 |
70 |
72 |
78 |
79 |
80 |
81 |
83 |
84 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface AppDelegate : RCTAppDelegate
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample/AppDelegate.mm:
--------------------------------------------------------------------------------
1 | #import "AppDelegate.h"
2 |
3 | #import
4 |
5 | @implementation AppDelegate
6 |
7 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
8 | {
9 | self.moduleName = @"ReactNativeKeyboardManagerSample";
10 | // You can add your custom initial props in the dictionary below.
11 | // They will be passed down to the ViewController used by React Native.
12 | self.initialProps = @{};
13 |
14 | return [super application:application didFinishLaunchingWithOptions:launchOptions];
15 | }
16 |
17 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
18 | {
19 | return [self bundleURL];
20 | }
21 |
22 | - (NSURL *)bundleURL
23 | {
24 | #if DEBUG
25 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
26 | #else
27 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
28 | #endif
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ios-marketing",
45 | "scale" : "1x",
46 | "size" : "1024x1024"
47 | }
48 | ],
49 | "info" : {
50 | "author" : "xcode",
51 | "version" : 1
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ReactNativeKeyboardManagerSample
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(CURRENT_PROJECT_VERSION)
25 | LSRequiresIPhoneOS
26 |
27 | NSAppTransportSecurity
28 |
29 |
30 | NSAllowsArbitraryLoads
31 |
32 | NSAllowsLocalNetworking
33 |
34 |
35 | NSLocationWhenInUseUsageDescription
36 |
37 | UILaunchStoryboardName
38 | LaunchScreen
39 | UIRequiredDeviceCapabilities
40 |
41 | arm64
42 |
43 | UISupportedInterfaceOrientations
44 |
45 | UIInterfaceOrientationPortrait
46 | UIInterfaceOrientationLandscapeLeft
47 | UIInterfaceOrientationLandscapeRight
48 |
49 | UIViewControllerBasedStatusBarAppearance
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
24 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyCollectedDataTypes
6 |
7 |
8 | NSPrivacyAccessedAPITypes
9 |
10 |
11 | NSPrivacyAccessedAPIType
12 | NSPrivacyAccessedAPICategoryFileTimestamp
13 | NSPrivacyAccessedAPITypeReasons
14 |
15 | C617.1
16 |
17 |
18 |
19 | NSPrivacyAccessedAPIType
20 | NSPrivacyAccessedAPICategoryUserDefaults
21 | NSPrivacyAccessedAPITypeReasons
22 |
23 | CA92.1
24 |
25 |
26 |
27 | NSPrivacyAccessedAPIType
28 | NSPrivacyAccessedAPICategorySystemBootTime
29 | NSPrivacyAccessedAPITypeReasons
30 |
31 | 35F9.1
32 |
33 |
34 |
35 | NSPrivacyTracking
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSample/main.m:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | #import "AppDelegate.h"
4 |
5 | int main(int argc, char *argv[])
6 | {
7 | @autoreleasepool {
8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSampleTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Sample/ios/ReactNativeKeyboardManagerSampleTests/ReactNativeKeyboardManagerSampleTests.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | #import
5 | #import
6 |
7 | #define TIMEOUT_SECONDS 600
8 | #define TEXT_TO_LOOK_FOR @"Welcome to React"
9 |
10 | @interface ReactNativeKeyboardManagerSampleTests : XCTestCase
11 |
12 | @end
13 |
14 | @implementation ReactNativeKeyboardManagerSampleTests
15 |
16 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test
17 | {
18 | if (test(view)) {
19 | return YES;
20 | }
21 | for (UIView *subview in [view subviews]) {
22 | if ([self findSubviewInView:subview matching:test]) {
23 | return YES;
24 | }
25 | }
26 | return NO;
27 | }
28 |
29 | - (void)testRendersWelcomeScreen
30 | {
31 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
32 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
33 | BOOL foundElement = NO;
34 |
35 | __block NSString *redboxError = nil;
36 | #ifdef DEBUG
37 | RCTSetLogFunction(
38 | ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
39 | if (level >= RCTLogLevelError) {
40 | redboxError = message;
41 | }
42 | });
43 | #endif
44 |
45 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
46 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
47 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
48 |
49 | foundElement = [self findSubviewInView:vc.view
50 | matching:^BOOL(UIView *view) {
51 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
52 | return YES;
53 | }
54 | return NO;
55 | }];
56 | }
57 |
58 | #ifdef DEBUG
59 | RCTSetLogFunction(RCTDefaultLogFunction);
60 | #endif
61 |
62 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
63 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
64 | }
65 |
66 | @end
67 |
--------------------------------------------------------------------------------
/Sample/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | preset: 'react-native',
3 | };
4 |
--------------------------------------------------------------------------------
/Sample/metro.config.js:
--------------------------------------------------------------------------------
1 | const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');
2 |
3 | /**
4 | * Metro configuration
5 | * https://reactnative.dev/docs/metro
6 | *
7 | * @type {import('metro-config').MetroConfig}
8 | */
9 | const config = {};
10 |
11 | module.exports = mergeConfig(getDefaultConfig(__dirname), config);
12 |
--------------------------------------------------------------------------------
/Sample/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ReactNativeKeyboardManagerSample",
3 | "version": "0.0.1",
4 | "private": true,
5 | "scripts": {
6 | "android": "react-native run-android",
7 | "ios": "react-native run-ios",
8 | "lint": "eslint .",
9 | "start": "react-native start",
10 | "test": "jest"
11 | },
12 | "dependencies": {
13 | "@react-navigation/native": "^6.1.17",
14 | "@react-navigation/native-stack": "^6.9.26",
15 | "@react-navigation/stack": "^6.3.29",
16 | "react": "18.2.0",
17 | "react-native": "0.74.0",
18 | "react-native-keyboard-manager": "file:../",
19 | "react-native-safe-area-context": "^4.10.1",
20 | "react-native-screens": "^3.31.1"
21 | },
22 | "devDependencies": {
23 | "@babel/core": "^7.20.0",
24 | "@babel/preset-env": "^7.20.0",
25 | "@babel/runtime": "^7.20.0",
26 | "@react-native/babel-preset": "0.74.81",
27 | "@react-native/eslint-config": "0.74.81",
28 | "@react-native/metro-config": "0.74.81",
29 | "@react-native/typescript-config": "0.74.81",
30 | "@types/react": "^18.2.6",
31 | "@types/react-test-renderer": "^18.0.0",
32 | "babel-jest": "^29.6.3",
33 | "eslint": "^8.19.0",
34 | "jest": "^29.6.3",
35 | "prettier": "2.8.8",
36 | "react-test-renderer": "18.2.0",
37 | "typescript": "5.0.4"
38 | },
39 | "engines": {
40 | "node": ">=18"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Sample/src/App.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * MIT License
3 | *
4 | * Copyright (c) 2017 Douglas Nassif Roma Junior
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the "Software"), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | */
24 |
25 | import React from 'react';
26 | import {Platform} from 'react-native';
27 |
28 | import {NavigationContainer} from '@react-navigation/native';
29 | import KeyboardManager from 'react-native-keyboard-manager';
30 |
31 | import FormScreen from './FormScreen';
32 | import {createNativeStackNavigator} from '@react-navigation/native-stack';
33 | import OtherScreen from './OtherScreen';
34 |
35 | if (Platform.OS === 'ios') {
36 | KeyboardManager.setEnable(true);
37 | KeyboardManager.setEnableDebugging(true);
38 | KeyboardManager.setKeyboardDistanceFromTextField(30);
39 | KeyboardManager.setLayoutIfNeededOnUpdate(true);
40 | KeyboardManager.setEnableAutoToolbar(true);
41 | KeyboardManager.setToolbarDoneBarButtonItemText('Done');
42 | KeyboardManager.setToolbarManageBehaviourBy('subviews'); // "subviews" | "tag" | "position"
43 | KeyboardManager.setToolbarPreviousNextButtonEnable(true);
44 | KeyboardManager.setToolbarTintColor('#FF00FF'); // Only #000000 format is supported
45 | KeyboardManager.setToolbarBarTintColor('#FFFF00'); // Only #000000 format is supported
46 | KeyboardManager.setShouldShowToolbarPlaceholder(true);
47 | KeyboardManager.setOverrideKeyboardAppearance(false);
48 | KeyboardManager.setKeyboardAppearance('default'); // "default" | "light" | "dark"
49 | KeyboardManager.setShouldResignOnTouchOutside(true);
50 | KeyboardManager.setShouldPlayInputClicks(true);
51 | }
52 |
53 | const Stack = createNativeStackNavigator();
54 |
55 | const App = () => {
56 | return (
57 |
58 |
62 |
63 |
64 |
65 |
66 | );
67 | };
68 |
69 | export default App;
70 |
--------------------------------------------------------------------------------
/Sample/src/FormScreen.tsx:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import {
3 | Button,
4 | Modal,
5 | SafeAreaView,
6 | ScrollView,
7 | Switch,
8 | Text,
9 | TextInput,
10 | View,
11 | } from 'react-native';
12 |
13 | import KeyboardManager, {PreviousNextView} from 'react-native-keyboard-manager';
14 |
15 | const INPUT_KEYS = [
16 | 'input1',
17 | 'input2',
18 | 'input3',
19 | 'input4',
20 | 'input5',
21 | 'input6',
22 | 'textarea1',
23 | 'textarea2',
24 | 'textarea3',
25 | 'textarea4',
26 | ];
27 |
28 | type StateType = {
29 | modalVisible?: boolean;
30 | enableDisable?: boolean;
31 | inputsValues: {
32 | [key: string]: string;
33 | };
34 | };
35 |
36 | class FormScreen extends Component {
37 | constructor(props: any) {
38 | super(props);
39 |
40 | this.state = {
41 | modalVisible: false,
42 | enableDisable: true,
43 | inputsValues: {},
44 | };
45 | }
46 |
47 | componentDidMount() {
48 | KeyboardManager.resignFirstResponder();
49 | }
50 |
51 | componentDidUpdate() {
52 | KeyboardManager.isKeyboardShowing().then(isShowing => {
53 | console.log('isKeyboardShowing: ' + isShowing);
54 | });
55 | }
56 |
57 | handleEnableDisable = (value: boolean) => {
58 | KeyboardManager.setEnable(value);
59 | this.setState({
60 | enableDisable: value,
61 | });
62 | };
63 |
64 | handleShowModal = () => {
65 | this.setState({
66 | modalVisible: true,
67 | });
68 | };
69 |
70 | handleOtherScreen = () => {
71 | this.props.navigation.navigate('OtherScreen');
72 | };
73 |
74 | handleCloseModal = () => {
75 | this.setState({
76 | modalVisible: false,
77 | });
78 | };
79 |
80 | getRef(key: string) {
81 | // eslint-disable-next-line react/no-string-refs
82 | return this.refs[key] as T;
83 | }
84 |
85 | renderInput = (ref: string, index: number) => {
86 | let nextRef = INPUT_KEYS[index + 1];
87 |
88 | const nextFocus = () => {
89 | if (!nextRef) {
90 | return;
91 | }
92 | this.getRef(nextRef)?.focus();
93 | };
94 |
95 | const multiline = ref.startsWith('textarea');
96 |
97 | return (
98 |
99 | {ref}
100 |
101 | {
114 | this.setState(previous => ({
115 | inputsValues: {
116 | ...previous.inputsValues,
117 | [ref]: text,
118 | },
119 | }));
120 | }}
121 | placeholder={ref}
122 | onSubmitEditing={!multiline ? nextFocus : undefined}
123 | multiline={multiline}
124 | numberOfLines={multiline ? 10 : 1}
125 | returnKeyType={multiline ? 'default' : 'next'}
126 | onLayout={() => {
127 | // When multiline=true and the input height changes, it updates the keyboard position.
128 | KeyboardManager.reloadLayoutIfNeeded();
129 | }}
130 | />
131 |
132 | );
133 | };
134 |
135 | renderContent = () => {
136 | return (
137 |
138 |
139 |
140 | React-Native Keyboard Manager
141 |
142 |
148 | Enable/Disable
149 |
153 |
154 |
155 |
156 | {INPUT_KEYS.map(this.renderInput)}
157 |
158 | );
159 | };
160 |
161 | render() {
162 | return (
163 |
164 |
165 |
166 |
170 | {this.renderContent()}
171 |
172 |
175 |
176 |
177 | {/* Inside a native modal the inputs need to be wrapped inside PreviousNextView */}
178 |
179 | {this.renderContent()}
180 |
181 |
182 |
183 |
184 |
185 | );
186 | }
187 | }
188 |
189 | export default FormScreen;
190 |
--------------------------------------------------------------------------------
/Sample/src/OtherScreen.tsx:
--------------------------------------------------------------------------------
1 | import {useNavigation} from '@react-navigation/native';
2 | import React from 'react';
3 | import {Button, SafeAreaView, ScrollView, TextInput, View} from 'react-native';
4 |
5 | const OtherScreen = () => {
6 | const navigation = useNavigation();
7 |
8 | const renderInput = (key: string) => {
9 | return (
10 |
22 | );
23 | };
24 |
25 | return (
26 |
27 |
28 |
35 |
36 | );
37 | };
38 |
39 | export default OtherScreen;
40 |
--------------------------------------------------------------------------------
/Sample/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@react-native/typescript-config/tsconfig.json"
3 | }
4 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['module:@react-native/babel-preset'],
3 | };
4 |
--------------------------------------------------------------------------------
/dist/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | A503755A1F851E1900B4DB41 /* RCTBaseTextInputView+Hack.m in Sources */ = {isa = PBXBuildFile; fileRef = A50375581F851E1900B4DB41 /* RCTBaseTextInputView+Hack.m */; };
11 | A511835D1EFAC0300077C68F /* ReactNativeKeyboardManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A511835C1EFAC0300077C68F /* ReactNativeKeyboardManager.m */; };
12 | A511835E1EFAC0300077C68F /* ReactNativeKeyboardManager.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = A511835B1EFAC0300077C68F /* ReactNativeKeyboardManager.h */; };
13 | A5A1B05A1F76A1FF000B2090 /* RNKMPreviousNextViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A5A1B0591F76A1FE000B2090 /* RNKMPreviousNextViewManager.m */; };
14 | A5D4880025542B0F00913159 /* KeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D487FF25542B0F00913159 /* KeyboardManager.swift */; };
15 | /* End PBXBuildFile section */
16 |
17 | /* Begin PBXCopyFilesBuildPhase section */
18 | A51183571EFAC02F0077C68F /* CopyFiles */ = {
19 | isa = PBXCopyFilesBuildPhase;
20 | buildActionMask = 2147483647;
21 | dstPath = "include/$(PRODUCT_NAME)";
22 | dstSubfolderSpec = 16;
23 | files = (
24 | A511835E1EFAC0300077C68F /* ReactNativeKeyboardManager.h in CopyFiles */,
25 | );
26 | runOnlyForDeploymentPostprocessing = 0;
27 | };
28 | /* End PBXCopyFilesBuildPhase section */
29 |
30 | /* Begin PBXFileReference section */
31 | A50375581F851E1900B4DB41 /* RCTBaseTextInputView+Hack.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "RCTBaseTextInputView+Hack.m"; sourceTree = ""; };
32 | A50375591F851E1900B4DB41 /* RCTBaseTextInputView+Hack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RCTBaseTextInputView+Hack.h"; sourceTree = ""; };
33 | A51183591EFAC02F0077C68F /* libReactNativeKeyboardManager.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libReactNativeKeyboardManager.a; sourceTree = BUILT_PRODUCTS_DIR; };
34 | A511835B1EFAC0300077C68F /* ReactNativeKeyboardManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReactNativeKeyboardManager.h; sourceTree = ""; };
35 | A511835C1EFAC0300077C68F /* ReactNativeKeyboardManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReactNativeKeyboardManager.m; sourceTree = ""; };
36 | A5A1B0581F76A1FE000B2090 /* RNKMPreviousNextViewManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNKMPreviousNextViewManager.h; sourceTree = ""; };
37 | A5A1B0591F76A1FE000B2090 /* RNKMPreviousNextViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNKMPreviousNextViewManager.m; sourceTree = ""; };
38 | A5D487FE25542B0F00913159 /* ReactNativeKeyboardManager-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ReactNativeKeyboardManager-Bridging-Header.h"; sourceTree = ""; };
39 | A5D487FF25542B0F00913159 /* KeyboardManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardManager.swift; sourceTree = ""; };
40 | /* End PBXFileReference section */
41 |
42 | /* Begin PBXFrameworksBuildPhase section */
43 | A51183561EFAC02F0077C68F /* Frameworks */ = {
44 | isa = PBXFrameworksBuildPhase;
45 | buildActionMask = 2147483647;
46 | files = (
47 | );
48 | runOnlyForDeploymentPostprocessing = 0;
49 | };
50 | /* End PBXFrameworksBuildPhase section */
51 |
52 | /* Begin PBXGroup section */
53 | 83CBB9F61A601CBA00E9B192 = {
54 | isa = PBXGroup;
55 | children = (
56 | 83CBBA001A601CBA00E9B192 /* Products */,
57 | A511835A1EFAC0300077C68F /* ReactNativeKeyboardManager */,
58 | );
59 | indentWidth = 2;
60 | sourceTree = "";
61 | tabWidth = 2;
62 | };
63 | 83CBBA001A601CBA00E9B192 /* Products */ = {
64 | isa = PBXGroup;
65 | children = (
66 | A51183591EFAC02F0077C68F /* libReactNativeKeyboardManager.a */,
67 | );
68 | name = Products;
69 | sourceTree = "";
70 | };
71 | A511835A1EFAC0300077C68F /* ReactNativeKeyboardManager */ = {
72 | isa = PBXGroup;
73 | children = (
74 | A50375591F851E1900B4DB41 /* RCTBaseTextInputView+Hack.h */,
75 | A50375581F851E1900B4DB41 /* RCTBaseTextInputView+Hack.m */,
76 | A5A1B0581F76A1FE000B2090 /* RNKMPreviousNextViewManager.h */,
77 | A5A1B0591F76A1FE000B2090 /* RNKMPreviousNextViewManager.m */,
78 | A511835B1EFAC0300077C68F /* ReactNativeKeyboardManager.h */,
79 | A511835C1EFAC0300077C68F /* ReactNativeKeyboardManager.m */,
80 | A5D487FF25542B0F00913159 /* KeyboardManager.swift */,
81 | A5D487FE25542B0F00913159 /* ReactNativeKeyboardManager-Bridging-Header.h */,
82 | );
83 | path = ReactNativeKeyboardManager;
84 | sourceTree = "";
85 | };
86 | /* End PBXGroup section */
87 |
88 | /* Begin PBXNativeTarget section */
89 | A51183581EFAC02F0077C68F /* ReactNativeKeyboardManager */ = {
90 | isa = PBXNativeTarget;
91 | buildConfigurationList = A511835F1EFAC0300077C68F /* Build configuration list for PBXNativeTarget "ReactNativeKeyboardManager" */;
92 | buildPhases = (
93 | A51183551EFAC02F0077C68F /* Sources */,
94 | A51183561EFAC02F0077C68F /* Frameworks */,
95 | A51183571EFAC02F0077C68F /* CopyFiles */,
96 | );
97 | buildRules = (
98 | );
99 | dependencies = (
100 | );
101 | name = ReactNativeKeyboardManager;
102 | productName = ReactNativeKeyboardManager;
103 | productReference = A51183591EFAC02F0077C68F /* libReactNativeKeyboardManager.a */;
104 | productType = "com.apple.product-type.library.static";
105 | };
106 | /* End PBXNativeTarget section */
107 |
108 | /* Begin PBXProject section */
109 | 83CBB9F71A601CBA00E9B192 /* Project object */ = {
110 | isa = PBXProject;
111 | attributes = {
112 | LastUpgradeCheck = 0610;
113 | ORGANIZATIONNAME = Facebook;
114 | TargetAttributes = {
115 | A51183581EFAC02F0077C68F = {
116 | CreatedOnToolsVersion = 8.3.3;
117 | LastSwiftMigration = 1210;
118 | ProvisioningStyle = Automatic;
119 | };
120 | };
121 | };
122 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactNativeKeyboardManager" */;
123 | compatibilityVersion = "Xcode 3.2";
124 | developmentRegion = English;
125 | hasScannedForEncodings = 0;
126 | knownRegions = (
127 | English,
128 | en,
129 | Base,
130 | );
131 | mainGroup = 83CBB9F61A601CBA00E9B192;
132 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
133 | projectDirPath = "";
134 | projectRoot = "";
135 | targets = (
136 | A51183581EFAC02F0077C68F /* ReactNativeKeyboardManager */,
137 | );
138 | };
139 | /* End PBXProject section */
140 |
141 | /* Begin PBXSourcesBuildPhase section */
142 | A51183551EFAC02F0077C68F /* Sources */ = {
143 | isa = PBXSourcesBuildPhase;
144 | buildActionMask = 2147483647;
145 | files = (
146 | A5D4880025542B0F00913159 /* KeyboardManager.swift in Sources */,
147 | A503755A1F851E1900B4DB41 /* RCTBaseTextInputView+Hack.m in Sources */,
148 | A5A1B05A1F76A1FF000B2090 /* RNKMPreviousNextViewManager.m in Sources */,
149 | A511835D1EFAC0300077C68F /* ReactNativeKeyboardManager.m in Sources */,
150 | );
151 | runOnlyForDeploymentPostprocessing = 0;
152 | };
153 | /* End PBXSourcesBuildPhase section */
154 |
155 | /* Begin XCBuildConfiguration section */
156 | 83CBBA201A601CBA00E9B192 /* Debug */ = {
157 | isa = XCBuildConfiguration;
158 | buildSettings = {
159 | ALWAYS_SEARCH_USER_PATHS = NO;
160 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
161 | CLANG_CXX_LIBRARY = "libc++";
162 | CLANG_ENABLE_MODULES = YES;
163 | CLANG_ENABLE_OBJC_ARC = YES;
164 | CLANG_WARN_BOOL_CONVERSION = YES;
165 | CLANG_WARN_CONSTANT_CONVERSION = YES;
166 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
167 | CLANG_WARN_EMPTY_BODY = YES;
168 | CLANG_WARN_ENUM_CONVERSION = YES;
169 | CLANG_WARN_INT_CONVERSION = YES;
170 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
171 | CLANG_WARN_UNREACHABLE_CODE = YES;
172 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
173 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
174 | COPY_PHASE_STRIP = NO;
175 | ENABLE_STRICT_OBJC_MSGSEND = YES;
176 | GCC_C_LANGUAGE_STANDARD = gnu99;
177 | GCC_DYNAMIC_NO_PIC = NO;
178 | GCC_OPTIMIZATION_LEVEL = 0;
179 | GCC_PREPROCESSOR_DEFINITIONS = (
180 | "DEBUG=1",
181 | "$(inherited)",
182 | );
183 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
184 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
185 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
186 | GCC_WARN_UNDECLARED_SELECTOR = YES;
187 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
188 | GCC_WARN_UNUSED_FUNCTION = YES;
189 | GCC_WARN_UNUSED_VARIABLE = YES;
190 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
191 | MTL_ENABLE_DEBUG_INFO = YES;
192 | ONLY_ACTIVE_ARCH = YES;
193 | SDKROOT = iphoneos;
194 | };
195 | name = Debug;
196 | };
197 | 83CBBA211A601CBA00E9B192 /* Release */ = {
198 | isa = XCBuildConfiguration;
199 | buildSettings = {
200 | ALWAYS_SEARCH_USER_PATHS = NO;
201 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
202 | CLANG_CXX_LIBRARY = "libc++";
203 | CLANG_ENABLE_MODULES = YES;
204 | CLANG_ENABLE_OBJC_ARC = YES;
205 | CLANG_WARN_BOOL_CONVERSION = YES;
206 | CLANG_WARN_CONSTANT_CONVERSION = YES;
207 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
208 | CLANG_WARN_EMPTY_BODY = YES;
209 | CLANG_WARN_ENUM_CONVERSION = YES;
210 | CLANG_WARN_INT_CONVERSION = YES;
211 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
212 | CLANG_WARN_UNREACHABLE_CODE = YES;
213 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
214 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
215 | COPY_PHASE_STRIP = YES;
216 | ENABLE_NS_ASSERTIONS = NO;
217 | ENABLE_STRICT_OBJC_MSGSEND = YES;
218 | GCC_C_LANGUAGE_STANDARD = gnu99;
219 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
220 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
221 | GCC_WARN_UNDECLARED_SELECTOR = YES;
222 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
223 | GCC_WARN_UNUSED_FUNCTION = YES;
224 | GCC_WARN_UNUSED_VARIABLE = YES;
225 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
226 | MTL_ENABLE_DEBUG_INFO = NO;
227 | SDKROOT = iphoneos;
228 | VALIDATE_PRODUCT = YES;
229 | };
230 | name = Release;
231 | };
232 | A51183601EFAC0300077C68F /* Debug */ = {
233 | isa = XCBuildConfiguration;
234 | buildSettings = {
235 | CLANG_ANALYZER_NONNULL = YES;
236 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
237 | CLANG_ENABLE_MODULES = YES;
238 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
239 | CLANG_WARN_INFINITE_RECURSION = YES;
240 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
241 | DEBUG_INFORMATION_FORMAT = dwarf;
242 | ENABLE_TESTABILITY = YES;
243 | FRAMEWORK_SEARCH_PATHS = (
244 | "$(inherited)",
245 | "$(PROJECT_DIR)",
246 | "$(PROJECT_DIR)/Frameworks",
247 | );
248 | GCC_NO_COMMON_BLOCKS = YES;
249 | HEADER_SEARCH_PATHS = (
250 | "$(inherited)",
251 | "$(SRCROOT)/../../react-native/Libraries/Text/**",
252 | );
253 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
254 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
255 | LIBRARY_SEARCH_PATHS = "";
256 | OTHER_LDFLAGS = "-ObjC";
257 | PRODUCT_NAME = "$(TARGET_NAME)";
258 | SKIP_INSTALL = YES;
259 | SWIFT_OBJC_BRIDGING_HEADER = "ReactNativeKeyboardManager/ReactNativeKeyboardManager-Bridging-Header.h";
260 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
261 | SWIFT_VERSION = 5.0;
262 | };
263 | name = Debug;
264 | };
265 | A51183611EFAC0300077C68F /* Release */ = {
266 | isa = XCBuildConfiguration;
267 | buildSettings = {
268 | CLANG_ANALYZER_NONNULL = YES;
269 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
270 | CLANG_ENABLE_MODULES = YES;
271 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
272 | CLANG_WARN_INFINITE_RECURSION = YES;
273 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
274 | COPY_PHASE_STRIP = NO;
275 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
276 | FRAMEWORK_SEARCH_PATHS = (
277 | "$(inherited)",
278 | "$(PROJECT_DIR)",
279 | "$(PROJECT_DIR)/Frameworks",
280 | );
281 | GCC_NO_COMMON_BLOCKS = YES;
282 | HEADER_SEARCH_PATHS = (
283 | "$(inherited)",
284 | "$(SRCROOT)/../../react-native/Libraries/Text/**",
285 | );
286 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
287 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
288 | LIBRARY_SEARCH_PATHS = "";
289 | OTHER_LDFLAGS = "-ObjC";
290 | PRODUCT_NAME = "$(TARGET_NAME)";
291 | SKIP_INSTALL = YES;
292 | SWIFT_OBJC_BRIDGING_HEADER = "ReactNativeKeyboardManager/ReactNativeKeyboardManager-Bridging-Header.h";
293 | SWIFT_VERSION = 5.0;
294 | };
295 | name = Release;
296 | };
297 | /* End XCBuildConfiguration section */
298 |
299 | /* Begin XCConfigurationList section */
300 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactNativeKeyboardManager" */ = {
301 | isa = XCConfigurationList;
302 | buildConfigurations = (
303 | 83CBBA201A601CBA00E9B192 /* Debug */,
304 | 83CBBA211A601CBA00E9B192 /* Release */,
305 | );
306 | defaultConfigurationIsVisible = 0;
307 | defaultConfigurationName = Release;
308 | };
309 | A511835F1EFAC0300077C68F /* Build configuration list for PBXNativeTarget "ReactNativeKeyboardManager" */ = {
310 | isa = XCConfigurationList;
311 | buildConfigurations = (
312 | A51183601EFAC0300077C68F /* Debug */,
313 | A51183611EFAC0300077C68F /* Release */,
314 | );
315 | defaultConfigurationIsVisible = 0;
316 | defaultConfigurationName = Release;
317 | };
318 | /* End XCConfigurationList section */
319 | };
320 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
321 | }
322 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager/KeyboardManager.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KeyboardManager.swift
3 | // ReactNativeKeyboardManager
4 | //
5 | // Created by Douglas Nassif Roma Junior on 05/11/20.
6 | // Copyright © 2020 Facebook. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager/RCTBaseTextInputView+Hack.h:
--------------------------------------------------------------------------------
1 | // MIT License
2 | //
3 | // Copyright (c) 2017 Douglas Nassif Roma Junior
4 | //
5 | // Permission is hereby granted, free of charge, to any person obtaining a copy
6 | // of this software and associated documentation files (the "Software"), to deal
7 | // in the Software without restriction, including without limitation the rights
8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | // copies of the Software, and to permit persons to whom the Software is
10 | // furnished to do so, subject to the following conditions:
11 | //
12 | // The above copyright notice and this permission notice shall be included in
13 | // all copies or substantial portions of the Software.
14 | //
15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | // THE SOFTWARE.
22 |
23 | @import Foundation;
24 |
25 | #import
26 |
27 | @interface RCTBaseTextInputView (Hack)
28 |
29 | - (void)setDefaultInputAccessoryView_avoid;
30 | - (void)setDefaultInputAccessoryView_backup;
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager/RCTBaseTextInputView+Hack.m:
--------------------------------------------------------------------------------
1 | // MIT License
2 | //
3 | // Copyright (c) 2017 Douglas Nassif Roma Junior
4 | //
5 | // Permission is hereby granted, free of charge, to any person obtaining a copy
6 | // of this software and associated documentation files (the "Software"), to deal
7 | // in the Software without restriction, including without limitation the rights
8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | // copies of the Software, and to permit persons to whom the Software is
10 | // furnished to do so, subject to the following conditions:
11 | //
12 | // The above copyright notice and this permission notice shall be included in
13 | // all copies or substantial portions of the Software.
14 | //
15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | // THE SOFTWARE.
22 |
23 | @import IQKeyboardManagerSwift;
24 |
25 | #import "RCTBaseTextInputView+Hack.h"
26 |
27 | @implementation RCTBaseTextInputView (Hack)
28 |
29 | - (void)setDefaultInputAccessoryView_avoid {
30 | if ([[IQKeyboardManager shared] enableAutoToolbar]) {
31 | NSLog(@"avoiding RCTTextInput.setDefaultInputAccessoryView");
32 | } else {
33 | NSLog(@"calling RCTTextInput.setDefaultInputAccessoryView");
34 | [self setDefaultInputAccessoryView_backup];
35 | }
36 | }
37 |
38 | - (void)setDefaultInputAccessoryView_backup {
39 | // backup for setDefaultInputAccessoryView
40 | }
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager/RNKMPreviousNextViewManager.h:
--------------------------------------------------------------------------------
1 | // MIT License
2 | //
3 | // Copyright (c) 2017 Douglas Nassif Roma Junior
4 | //
5 | // Permission is hereby granted, free of charge, to any person obtaining a copy
6 | // of this software and associated documentation files (the "Software"), to deal
7 | // in the Software without restriction, including without limitation the rights
8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | // copies of the Software, and to permit persons to whom the Software is
10 | // furnished to do so, subject to the following conditions:
11 | //
12 | // The above copyright notice and this permission notice shall be included in
13 | // all copies or substantial portions of the Software.
14 | //
15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | // THE SOFTWARE.
22 |
23 | @import Foundation;
24 |
25 | #import
26 |
27 | @interface RNKMPreviousNextViewManager : RCTViewManager
28 | @end
29 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager/RNKMPreviousNextViewManager.m:
--------------------------------------------------------------------------------
1 | // MIT License
2 | //
3 | // Copyright (c) 2017 Douglas Nassif Roma Junior
4 | //
5 | // Permission is hereby granted, free of charge, to any person obtaining a copy
6 | // of this software and associated documentation files (the "Software"), to deal
7 | // in the Software without restriction, including without limitation the rights
8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | // copies of the Software, and to permit persons to whom the Software is
10 | // furnished to do so, subject to the following conditions:
11 | //
12 | // The above copyright notice and this permission notice shall be included in
13 | // all copies or substantial portions of the Software.
14 | //
15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | // THE SOFTWARE.
22 |
23 | @import IQKeyboardManagerSwift;
24 |
25 | #import "RNKMPreviousNextViewManager.h"
26 |
27 | @implementation RNKMPreviousNextViewManager
28 |
29 | RCT_EXPORT_MODULE()
30 |
31 | - (UIView *)view
32 | {
33 | return [[IQPreviousNextView alloc] init];
34 | }
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager/ReactNativeKeyboardManager-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager/ReactNativeKeyboardManager.h:
--------------------------------------------------------------------------------
1 | // MIT License
2 | //
3 | // Copyright (c) 2017 Douglas Nassif Roma Junior
4 | //
5 | // Permission is hereby granted, free of charge, to any person obtaining a copy
6 | // of this software and associated documentation files (the "Software"), to deal
7 | // in the Software without restriction, including without limitation the rights
8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | // copies of the Software, and to permit persons to whom the Software is
10 | // furnished to do so, subject to the following conditions:
11 | //
12 | // The above copyright notice and this permission notice shall be included in
13 | // all copies or substantial portions of the Software.
14 | //
15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | // THE SOFTWARE.
22 |
23 | @import Foundation;
24 |
25 | #import
26 | #import
27 |
28 | @interface RCTConvert (IQAutoToolbarManageBehaviour)
29 | @end
30 |
31 | @interface ReactNativeKeyboardManager : NSObject
32 | @end
33 |
--------------------------------------------------------------------------------
/ios/ReactNativeKeyboardManager/ReactNativeKeyboardManager.m:
--------------------------------------------------------------------------------
1 | // MIT License
2 | //
3 | // Copyright (c) 2017 Douglas Nassif Roma Junior
4 | //
5 | // Permission is hereby granted, free of charge, to any person obtaining a copy
6 | // of this software and associated documentation files (the "Software"), to deal
7 | // in the Software without restriction, including without limitation the rights
8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | // copies of the Software, and to permit persons to whom the Software is
10 | // furnished to do so, subject to the following conditions:
11 | //
12 | // The above copyright notice and this permission notice shall be included in
13 | // all copies or substantial portions of the Software.
14 | //
15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | // THE SOFTWARE.
22 |
23 | @import IQKeyboardManagerSwift;
24 |
25 | #import
26 | #import
27 |
28 | #import "ReactNativeKeyboardManager.h"
29 | #import
30 | #import
31 |
32 | #import
33 |
34 | @implementation RCTConvert(IQAutoToolbarManageBehaviour)
35 |
36 | RCT_ENUM_CONVERTER(
37 | IQAutoToolbarManageBehaviour,
38 | (@{
39 | @"subviews": @(IQAutoToolbarManageBehaviourBySubviews),
40 | @"tag": @(IQAutoToolbarManageBehaviourByTag),
41 | @"position": @(IQAutoToolbarManageBehaviourByPosition),
42 | }),
43 | IQAutoToolbarManageBehaviourBySubviews,
44 | integerValue
45 | );
46 |
47 | @end
48 |
49 | @implementation ReactNativeKeyboardManager
50 |
51 | - (instancetype)init
52 | {
53 | self = [super init];
54 | if (self) {
55 | Swizzle([RCTBaseTextInputView class], @selector(setDefaultInputAccessoryView_backup), @selector(setDefaultInputAccessoryView));
56 | Swizzle([RCTBaseTextInputView class], @selector(setDefaultInputAccessoryView), @selector(setDefaultInputAccessoryView_avoid));
57 |
58 | // set LayoutIfNeededOnUpdate to YES to prevent problems with SateArea
59 | // https://github.com/hackiftekhar/IQKeyboardManager/issues/1687#issuecomment-721618667
60 | [[IQKeyboardManager shared] setLayoutIfNeededOnUpdate:YES];
61 | }
62 | return self;
63 | }
64 |
65 | void Swizzle(Class c, SEL orig, SEL new)
66 | {
67 | Method origMethod = class_getInstanceMethod(c, orig);
68 | Method newMethod = class_getInstanceMethod(c, new);
69 | if(class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod)))
70 | class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
71 | else
72 | method_exchangeImplementations(origMethod, newMethod);
73 | }
74 |
75 | - (UIColor *)colorFromHexString:(NSString *)hexString {
76 | unsigned rgbValue = 0;
77 | NSScanner *scanner = [NSScanner scannerWithString:hexString];
78 | [scanner setScanLocation:1]; // bypass '#' character
79 | [scanner scanHexInt:&rgbValue];
80 | return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
81 | }
82 |
83 | + (BOOL)requiresMainQueueSetup
84 | {
85 | return YES;
86 | }
87 |
88 | - (dispatch_queue_t)methodQueue
89 | {
90 | return dispatch_get_main_queue();
91 | }
92 |
93 | BOOL debugging = NO;
94 |
95 | RCT_EXPORT_MODULE(ReactNativeKeyboardManager);
96 |
97 | RCT_EXPORT_METHOD(setEnableDebugging: (BOOL) enabled) {
98 | debugging = enabled;
99 | if (debugging) RCTLogInfo(@"KeyboardManager.setEnableDebugging: %d", enabled);
100 | [[IQKeyboardManager shared] setEnableDebugging:enabled];
101 | }
102 |
103 | // UIKeyboard handling
104 |
105 | RCT_EXPORT_METHOD(setEnable: (BOOL) enabled) {
106 | if (debugging) RCTLogInfo(@"KeyboardManager.setEnable: %d", enabled);
107 | [[IQKeyboardManager shared] setEnable:enabled];
108 | }
109 |
110 | RCT_EXPORT_METHOD(setKeyboardDistanceFromTextField: (CGFloat) distance) {
111 | if (debugging) RCTLogInfo(@"KeyboardManager.setKeyboardDistanceFromTextField: %f", distance);
112 | [[IQKeyboardManager shared] setKeyboardDistanceFromTextField:distance];
113 | }
114 |
115 | RCT_EXPORT_METHOD(setLayoutIfNeededOnUpdate: (BOOL) enabled) {
116 | if (debugging) RCTLogInfo(@"KeyboardManager.setLayoutIfNeededOnUpdate: %d", enabled);
117 | [[IQKeyboardManager shared] setLayoutIfNeededOnUpdate:enabled];
118 | }
119 |
120 | // UIToolbar handling
121 |
122 | RCT_EXPORT_METHOD(setToolbarPreviousNextButtonEnable: (BOOL) enabled) {
123 | if (debugging) RCTLogInfo(@"KeyboardManager.setToolbarPreviousNextButtonEnable: %d", enabled);
124 | if (enabled) {
125 | NSMutableArray *newArray = [[IQKeyboardManager shared].toolbarPreviousNextAllowedClasses mutableCopy];
126 | [newArray addObject:[RCTRootView class]];
127 | [IQKeyboardManager shared].toolbarPreviousNextAllowedClasses = newArray;
128 | } else {
129 | NSMutableArray *newArray = [[IQKeyboardManager shared].toolbarPreviousNextAllowedClasses mutableCopy];
130 | [newArray removeObject:[RCTRootView class]];
131 | [IQKeyboardManager shared].toolbarPreviousNextAllowedClasses = newArray;
132 | }
133 | }
134 |
135 | RCT_EXPORT_METHOD(setEnableAutoToolbar: (BOOL) enabled) {
136 | if (debugging) RCTLogInfo(@"KeyboardManager.setEnableAutoToolbar: %d", enabled);
137 | [[IQKeyboardManager shared] setEnableAutoToolbar:enabled];
138 | }
139 |
140 | RCT_EXPORT_METHOD(setShouldToolbarUsesTextFieldTintColor: (BOOL) enabled) {
141 | if (debugging) RCTLogInfo(@"KeyboardManager.setShouldToolbarUsesTextFieldTintColor: %d", enabled);
142 | [[IQKeyboardManager shared] setShouldToolbarUsesTextFieldTintColor:enabled];
143 | }
144 |
145 | RCT_EXPORT_METHOD(setToolbarTintColor: (NSString*) hexString) {
146 | if (debugging) RCTLogInfo(@"KeyboardManager.setToolbarTintColor: %@", hexString);
147 | UIColor* toolbarTintColor = [self colorFromHexString:hexString];
148 | [[IQKeyboardManager shared] setToolbarTintColor: toolbarTintColor];
149 | }
150 |
151 | RCT_EXPORT_METHOD(setToolbarBarTintColor: (NSString*) hexString) {
152 | if (debugging) RCTLogInfo(@"KeyboardManager.setToolbarBarTintColor: %@", hexString);
153 | UIColor* toolbarBarTintColor = [self colorFromHexString:hexString];
154 | [[IQKeyboardManager shared] setToolbarBarTintColor: toolbarBarTintColor];
155 | }
156 |
157 | RCT_EXPORT_METHOD(setShouldShowToolbarPlaceholder: (BOOL) enabled) {
158 | if (debugging) RCTLogInfo(@"KeyboardManager.setShouldShowToolbarPlaceholder: %d", enabled);
159 | [[IQKeyboardManager shared] setShouldShowToolbarPlaceholder:enabled];
160 | }
161 |
162 | RCT_EXPORT_METHOD(setToolbarDoneBarButtonItemText: (NSString *) text) {
163 | if (debugging) RCTLogInfo(@"KeyboardManager.setToolbarDoneBarButtonItemText: %@", text);
164 | [[IQKeyboardManager shared] setToolbarDoneBarButtonItemText:text];
165 | }
166 |
167 | RCT_EXPORT_METHOD(setToolbarManageBehaviourBy: (IQAutoToolbarManageBehaviour) behaviour) {
168 | if (debugging) RCTLogInfo(@"KeyboardManager.setToolbarManageBehaviour: %ld", behaviour);
169 | [[IQKeyboardManager shared] setToolbarManageBehaviour:behaviour];
170 | }
171 |
172 | RCT_EXPORT_METHOD(setShouldPlayInputClicks: (BOOL) enabled) {
173 | if (debugging) RCTLogInfo(@"KeyboardManager.setShouldPlayInputClicks: %d", enabled);
174 | [[IQKeyboardManager shared] setShouldPlayInputClicks:enabled];
175 | }
176 |
177 | // UIKeyboard Apparence overriding
178 | // https://github.com/facebook/react-native/blob/v0.60.0/React/Base/RCTConvert.m#L398
179 |
180 | RCT_EXPORT_METHOD(setOverrideKeyboardAppearance: (BOOL) enabled) {
181 | if (debugging) RCTLogInfo(@"KeyboardManager.setOverrideKeyboardAppearance: %d", enabled);
182 | [[IQKeyboardManager shared] setOverrideKeyboardAppearance:enabled];
183 | }
184 |
185 | RCT_EXPORT_METHOD(setKeyboardAppearance: (UIKeyboardAppearance) appearance) {
186 | if (debugging) RCTLogInfo(@"KeyboardManager.setKeyboardAppearance: %ld", appearance);
187 | [[IQKeyboardManager shared] setKeyboardAppearance:appearance];
188 | }
189 |
190 | // UITextField/UITextView Resign handling
191 |
192 | RCT_EXPORT_METHOD(setShouldResignOnTouchOutside: (BOOL) enabled) {
193 | if (debugging) RCTLogInfo(@"KeyboardManager.setShouldResignOnTouchOutside: %d", enabled);
194 | [[IQKeyboardManager shared] setShouldResignOnTouchOutside:enabled];
195 | }
196 |
197 | RCT_EXPORT_METHOD(resignFirstResponder) {
198 | if (debugging) RCTLogInfo(@"KeyboardManager.resignFirstResponder");
199 | [[IQKeyboardManager shared] resignFirstResponder];
200 | }
201 |
202 | RCT_EXPORT_METHOD(reloadLayoutIfNeeded) {
203 | if (debugging) RCTLogInfo(@"KeyboardManager.reloadLayoutIfNeeded");
204 | [[IQKeyboardManager shared] reloadLayoutIfNeeded];
205 | }
206 |
207 | // UIAnimation handling
208 |
209 | RCT_EXPORT_METHOD(isKeyboardShowing: (RCTPromiseResolveBlock) resolve rejecter: (RCTPromiseRejectBlock) reject) {
210 | BOOL isKeyboardShowing = [IQKeyboardManager shared].keyboardShowing;
211 | if (debugging) RCTLogInfo(@"KeyboardManager.isKeyboardShowing: %d", isKeyboardShowing);
212 | resolve(@(isKeyboardShowing));
213 | }
214 |
215 | @end
216 |
--------------------------------------------------------------------------------
/jest/mock.js:
--------------------------------------------------------------------------------
1 | Object.defineProperty(exports, "__esModule", { value: true });
2 |
3 | const { View } = require('react-native');
4 |
5 | const KeyboardManager = {
6 | setEnable: jest.fn().mockResolvedValue(),
7 | setEnableDebugging: jest.fn().mockResolvedValue(),
8 | setLayoutIfNeededOnUpdate: jest.fn().mockResolvedValue(),
9 | setKeyboardDistanceFromTextField: jest.fn().mockResolvedValue(),
10 | setEnableAutoToolbar: jest.fn().mockResolvedValue(),
11 | setToolbarDoneBarButtonItemText: jest.fn().mockResolvedValue(),
12 | setToolbarManageBehaviourBy: jest.fn().mockResolvedValue(),
13 | setToolbarPreviousNextButtonEnable: jest.fn().mockResolvedValue(),
14 | setToolbarTintColor: jest.fn().mockResolvedValue(),
15 | setToolbarBarTintColor: jest.fn().mockResolvedValue(),
16 | setShouldShowToolbarPlaceholder: jest.fn().mockResolvedValue(),
17 | setOverrideKeyboardAppearance: jest.fn().mockResolvedValue(),
18 | setKeyboardAppearance: jest.fn().mockResolvedValue(),
19 | setShouldResignOnTouchOutside: jest.fn().mockResolvedValue(),
20 | setShouldPlayInputClicks: jest.fn().mockResolvedValue(),
21 | setShouldToolbarUsesTextFieldTintColor: jest.fn().mockResolvedValue(),
22 | resignFirstResponder: jest.fn().mockResolvedValue(),
23 | reloadLayoutIfNeeded: jest.fn().mockResolvedValue(),
24 | isKeyboardShowing: jest.fn().mockResolvedValue(false),
25 | };
26 |
27 | exports.PreviousNextView = View;
28 | exports.KeyboardManager = KeyboardManager;
29 | exports.default = exports.KeyboardManager;
30 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-native-keyboard-manager",
3 | "version": "6.5.16-0",
4 | "description": "Library that allows to prevent issues of keyboard sliding up and cover on React-Native iOS projects. ⚛",
5 | "private": false,
6 | "repository": {
7 | "type": "git",
8 | "url": "https://github.com/douglasjunior/react-native-keyboard-manager.git"
9 | },
10 | "main": "src",
11 | "keywords": [
12 | "react-native",
13 | "ios",
14 | "keyboard",
15 | "IQKeyboardManager"
16 | ],
17 | "author": {
18 | "name": "Douglas Nassif Roma Junior",
19 | "email": "nassifrroma@gmail.com",
20 | "url": "https://github.com/douglasjunior"
21 | },
22 | "license": "MIT",
23 | "bugs": {
24 | "url": "https://github.com/douglasjunior/react-native-keyboard-manager/issues"
25 | },
26 | "homepage": "https://github.com/douglasjunior/react-native-keyboard-manager",
27 | "scripts": {
28 | "build": "tsc",
29 | "publish-script": "node scripts/publish.js"
30 | },
31 | "peerDependencies": {
32 | "react-native": ">=0.60"
33 | },
34 | "devDependencies": {
35 | "react": "18.2.0",
36 | "react-native": "0.74.0",
37 | "@babel/core": "^7.20.0",
38 | "@babel/preset-env": "^7.20.0",
39 | "@babel/runtime": "^7.20.0",
40 | "@react-native/babel-preset": "0.74.81",
41 | "@react-native/eslint-config": "0.74.81",
42 | "@react-native/metro-config": "0.74.81",
43 | "@react-native/typescript-config": "0.74.81",
44 | "@types/react": "^18.2.6",
45 | "@types/react-test-renderer": "^18.0.0",
46 | "babel-jest": "^29.6.3",
47 | "eslint": "^8.19.0",
48 | "jest": "^29.6.3",
49 | "prettier": "2.8.8",
50 | "react-test-renderer": "18.2.0",
51 | "typescript": "5.0.4"
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/screenshots/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/douglasjunior/react-native-keyboard-manager/18ba8e2a14d110f376ba579cf7bec183d9b7b38e/screenshots/01.png
--------------------------------------------------------------------------------
/screenshots/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/douglasjunior/react-native-keyboard-manager/18ba8e2a14d110f376ba579cf7bec183d9b7b38e/screenshots/02.png
--------------------------------------------------------------------------------
/screenshots/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/douglasjunior/react-native-keyboard-manager/18ba8e2a14d110f376ba579cf7bec183d9b7b38e/screenshots/03.png
--------------------------------------------------------------------------------
/screenshots/drag-and-drop-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/douglasjunior/react-native-keyboard-manager/18ba8e2a14d110f376ba579cf7bec183d9b7b38e/screenshots/drag-and-drop-01.png
--------------------------------------------------------------------------------
/screenshots/drag-and-drop-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/douglasjunior/react-native-keyboard-manager/18ba8e2a14d110f376ba579cf7bec183d9b7b38e/screenshots/drag-and-drop-02.png
--------------------------------------------------------------------------------
/scripts/publish.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const fs = require('fs');
3 | const child_process = require('child_process');
4 |
5 | const packageJson = require('../package.json');
6 |
7 | packageJson.main = 'dist';
8 | packageJson.types = 'dist';
9 |
10 | const packageJsonPath = path.resolve(__dirname, '..', 'package.json');
11 |
12 | const content = JSON.stringify(packageJson, null, 2) + '\n';
13 |
14 | child_process.execSync('npm run build');
15 |
16 | fs.writeFileSync(packageJsonPath, content, {
17 | encoding: 'utf-8',
18 | });
19 |
20 | try {
21 | child_process.execSync('npm publish');
22 | } catch (err) {
23 | console.error(err);
24 | }
25 |
26 | child_process.execSync('git checkout -- "' + packageJsonPath + '"');
27 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * MIT License
3 | *
4 | * Copyright (c) 2017 Douglas Nassif Roma Junior
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the "Software"), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | */
24 |
25 | import {ComponentType} from 'react';
26 | import {
27 | NativeModules,
28 | requireNativeComponent,
29 | View,
30 | Platform,
31 | ViewProps,
32 | } from 'react-native';
33 | const {OS} = Platform;
34 |
35 | export type ToolbarBehaviour = 'subviews' | 'tag' | 'position';
36 |
37 | export type KeyboardAppearance = 'default' | 'light' | 'dark';
38 |
39 | export const PreviousNextView =
40 | OS === 'ios'
41 | ? (requireNativeComponent(
42 | 'RNKMPreviousNextView',
43 | ) as ComponentType)
44 | : View;
45 |
46 | type KeyboardManagerType = {
47 | setEnable(enable: boolean): void;
48 | setEnableDebugging(enable: boolean): void;
49 | setLayoutIfNeededOnUpdate(enable: boolean): void;
50 | setKeyboardDistanceFromTextField(distance: number): void;
51 | setEnableAutoToolbar(enable: boolean): void;
52 | setToolbarDoneBarButtonItemText(text: string): void;
53 | setToolbarManageBehaviourBy(behaviour: ToolbarBehaviour): void;
54 | setToolbarPreviousNextButtonEnable(enable: boolean): void;
55 | setToolbarTintColor(hexColor: string): void;
56 | setToolbarBarTintColor(hexColor: string): void;
57 | setShouldShowToolbarPlaceholder(enable: boolean): void;
58 | setOverrideKeyboardAppearance(enable: boolean): void;
59 | setKeyboardAppearance(appearance: KeyboardAppearance): void;
60 | setShouldResignOnTouchOutside(enable: boolean): void;
61 | setShouldPlayInputClicks(enable: boolean): void;
62 | setShouldToolbarUsesTextFieldTintColor(enable: boolean): void;
63 | resignFirstResponder(): void;
64 | reloadLayoutIfNeeded(): void;
65 | isKeyboardShowing(): Promise;
66 | };
67 |
68 | export const KeyboardManager =
69 | NativeModules.ReactNativeKeyboardManager as KeyboardManagerType;
70 |
71 | export default KeyboardManager;
72 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@react-native/typescript-config/tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "./dist",
5 | "noEmit": false,
6 | "declaration": true,
7 | "jsx": "react",
8 | "sourceMap": true,
9 | "removeComments": false,
10 | "allowImportingTsExtensions": false
11 | },
12 | "include": ["src"],
13 | "exclude": ["node_modules", "**/__tests__/*"]
14 | }
15 |
--------------------------------------------------------------------------------