{"id":4054,"url":"https://github.com/douglasjunior/react-native-keyboard-manager","last_synced_at":"2025-05-14T00:10:12.640Z","repository":{"id":44575262,"uuid":"94996777","full_name":"douglasjunior/react-native-keyboard-manager","owner":"douglasjunior","description":"⚛ Library to prevent issues of keyboard sliding up and cover inputs on React-Native iOS projects.","archived":false,"fork":false,"pushed_at":"2024-01-29T17:10:44.000Z","size":1456,"stargazers_count":915,"open_issues_count":1,"forks_count":60,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-05-01T19:54:04.505Z","etag":null,"topics":["hacktoberfest","ios","iqkeyboardmanager","keyboard","react-native"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/react-native-keyboard-manager","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/douglasjunior.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":"douglasjunior","patreon":"douglasjunior","open_collective":"rn-keyboard-manager","custom":"paypal.me/douglasnassif"}},"created_at":"2017-06-21T11:27:21.000Z","updated_at":"2024-04-27T17:11:19.000Z","dependencies_parsed_at":"2023-11-07T17:06:53.425Z","dependency_job_id":"30a33169-cf30-4fae-9b06-e4de0df29389","html_url":"https://github.com/douglasjunior/react-native-keyboard-manager","commit_stats":{"total_commits":177,"total_committers":15,"mean_commits":11.8,"dds":0.576271186440678,"last_synced_commit":"8b13527cff3b4095b9eec48b5c9dd39ea5a3ffed"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasjunior%2Freact-native-keyboard-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasjunior%2Freact-native-keyboard-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasjunior%2Freact-native-keyboard-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasjunior%2Freact-native-keyboard-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/douglasjunior","download_url":"https://codeload.github.com/douglasjunior/react-native-keyboard-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247963437,"owners_count":21025016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","ios","iqkeyboardmanager","keyboard","react-native"],"created_at":"2024-01-05T20:16:59.687Z","updated_at":"2025-04-11T09:33:50.563Z","avatar_url":"https://github.com/douglasjunior.png","language":"Objective-C","funding_links":["https://github.com/sponsors/douglasjunior","https://patreon.com/douglasjunior","https://opencollective.com/rn-keyboard-manager","paypal.me/douglasnassif","https://www.patreon.com/douglasjunior","https://paypal.me/douglasnassif"],"categories":["Components","\u003ca name=\"OS-\u0026-System-\u0026-File-Manager:-Native-Modules\"\u003eOS, System \u0026 File Manager: Native Modules\u003c/a\u003e","Objective-C","Others"],"sub_categories":["UI"],"readme":"# React-Native Keyboard Manager\n\n[![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/douglasjunior/react-native-keyboard-manager/blob/master/LICENSE)\n[![npm version](https://img.shields.io/npm/v/react-native-keyboard-manager.svg)](https://www.npmjs.com/package/react-native-keyboard-manager)\n[![npm downloads](https://img.shields.io/npm/dt/react-native-keyboard-manager.svg)](#install)\n\nLibrary to prevent issues of keyboard sliding up and cover inputs on React-Native iOS projects ⚛. Thanks to awesome [IQKeyboardManager](https://github.com/hackiftekhar/IQKeyboardManager) ❤️.\n\nThis is only for iOS, Android no needed. For Android just add `android:windowSoftInputMode=\"adjustResize\"` to your activity.\n\n## Screenshots\n\n| Enabled | Disabled |\n| - | - |\n| \u003cimg src='https://raw.githubusercontent.com/douglasjunior/react-native-keyboard-manager/master/screenshots/01.png' width='240' /\u003e \u003cimg src='https://raw.githubusercontent.com/douglasjunior/react-native-keyboard-manager/master/screenshots/02.png' width='240' /\u003e | \u003cimg src='https://raw.githubusercontent.com/douglasjunior/react-native-keyboard-manager/master/screenshots/03.png' width='240' /\u003e |\n\n| \u003cimg src='https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/v3.3.0/Screenshot/IQKeyboardManager.gif' width='240' /\u003e |\n| - |\n| _Credits: IQKeyboardManager_ |\n\n## Summary\n\n- [Install](#install)\n- [Linking](#auto-linking)\n- [Usage](#usage)\n- [Mock with jest](#mock-with-jest)\n- [Known issues](#known-issues)\n\n## Notes:\n\n- for RN 0.60.0 or later use `react-native-keyboard-manager@latest`\n- for RN 0.53.0 ... 0.59.10, use `react-native-keyboard-manager@4.0.13-12`\n- for RN 0.47.0 ... 0.52.2, use `react-native-keyboard-manager@4.0.13-5`\n- for RN 0.40.0 ... 0.46.4, use `react-native-keyboard-manager@4.0.13-1`\n\n## Install\n\n```bash\nyarn add react-native-keyboard-manager\n```\nOr\n```bash\nnpm i -S react-native-keyboard-manager\n```\n\n## Auto linking\n\nIf you are using `React Native 0.60.+` go to the folder **your-project/ios** and run `pod install`, and you're done. \n\nIf not, use one of the following methods to link.\n\n## Link with `react-native link`:\n\nReact native link is no longer supported due to cocoapods dependency. To avoid cocoapods you can use the version `4.0.13-X`.\n\n## Link manual with cocoapods:\n\n1. Add this line to your Podfile\n    ```bash\n    pod 'ReactNativeKeyboardManager', :path =\u003e '../node_modules/react-native-keyboard-manager'\n    ```\n    \n2. run\n    ```bash\n    pod install\n    ```\n\n## Post install\n\nBecause [IQKeyboardManager](https://github.com/hackiftekhar/IQKeyboardManager) is written in `Swift`, you need to enable `Swift` on your native Xcode project.\n\n1. Open `ios/YourAppName.xcworkspace` in Xcode\n1. Right-click on `YourAppName` in the `Project Navigator` on the left, and click `New File`.\n1. Create a single empty `Swift` file to the project (make sure that `YourAppName` target is selected when adding)\n1. When Xcode asks, press **Create Bridging Header** and do not remove `Swift` file then. \n1. Re-run your build.\n\n## Usage\n\nIt does not need any extra library setup to work, just [install](#install) and go.\n\nBut, if you need some configuration, there are some options available.\n\n```js\nimport { Platform } from 'react-native';\nimport KeyboardManager from 'react-native-keyboard-manager';\n\nif (Platform.OS === 'ios') {\n    KeyboardManager.setEnable(true);\n    KeyboardManager.setEnableDebugging(false);\n    KeyboardManager.setKeyboardDistanceFromTextField(10);\n    KeyboardManager.setLayoutIfNeededOnUpdate(true);\n    KeyboardManager.setEnableAutoToolbar(true);\n    KeyboardManager.setToolbarDoneBarButtonItemText(\"Done\");\n    KeyboardManager.setToolbarManageBehaviourBy(\"subviews\"); // \"subviews\" | \"tag\" | \"position\"\n    KeyboardManager.setToolbarPreviousNextButtonEnable(false);\n    KeyboardManager.setToolbarTintColor('#0000FF'); // Only #000000 format is supported\n    KeyboardManager.setToolbarBarTintColor('#FFFFFF'); // Only #000000 format is supported\n    KeyboardManager.setShouldShowToolbarPlaceholder(true);\n    KeyboardManager.setOverrideKeyboardAppearance(false);\n    KeyboardManager.setKeyboardAppearance(\"default\"); // \"default\" | \"light\" | \"dark\"\n    KeyboardManager.setShouldResignOnTouchOutside(true);\n    KeyboardManager.setShouldPlayInputClicks(true);\n    KeyboardManager.resignFirstResponder();\n    KeyboardManager.isKeyboardShowing()\n      .then((isShowing) =\u003e {\n          // ...\n      });\n}\n```\n\nFor more details, see the [Sample Project](https://github.com/douglasjunior/react-native-keyboard-manager/blob/master/Sample/App.tsx) and the official [IQKeyboardManager documentation](https://github.com/hackiftekhar/IQKeyboardManager/tree/v6.5.4).\n\n### Enable Next/Previous buttons\n\nIf you want to use Next/Previous buttons, enable it.\n\n```js\nif (Platform.OS === 'ios') {\n    KeyboardManager.setToolbarPreviousNextButtonEnable(true);\n}\n```\n\nAnd if you want to use Next/Previous buttons inside a React Native `Modal`, you need to wrap the fields in a `PreviousNextView`.\n\n```jsx\nimport { View, Modal } from 'react-native';\nimport { PreviousNextView } from 'react-native-keyboard-manager';\n\nclass App extends Component {\n  render() {\n      return (\n          \u003cView {...} \u003e\n              // others views\n              \u003cModal {...} \u003e\n                  // others views\n                  \u003cPreviousNextView style={...} \u003e\n                      // all TextInput\n                  \u003c/PreviousNextView\u003e\n              \u003c/Modal\u003e\n          \u003c/View\u003e\n      );\n  }\n}\n```\n\n## Mock with jest\n\n```js\njest.mock('react-native-keyboard-manager', () =\u003e require('react-native-keyboard-manager/jest/mock'));\n```\n\n## Known issues\n\n- If your project is managed by Expo, you will need to eject: https://github.com/douglasjunior/react-native-keyboard-manager/issues/100\n- Problem with \"@react-navigation/native-stack\" and \"IQKeyboardManager\" on iOS: https://github.com/douglasjunior/react-native-keyboard-manager/issues/89\n- Pod install failed on M1 machines: https://github.com/douglasjunior/react-native-keyboard-manager/issues/104\n\n## Contribute\n\nNew features, bug fixes and improvements are welcome! For questions and suggestions use the [issues](https://github.com/douglasjunior/react-native-keyboard-manager/issues).\n\n\u003ca href=\"https://www.patreon.com/douglasjunior\"\u003e\u003cimg src=\"http://i.imgur.com/xEO164Z.png\" alt=\"Become a Patron!\" width=\"200\" /\u003e\u003c/a\u003e\n[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://paypal.me/douglasnassif)\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=douglasjunior/react-native-keyboard-manager\u0026type=Date)](https://star-history.com/#douglasjunior/react-native-keyboard-manager\u0026Date)\n\n## License\n\n```\nThe MIT License (MIT)\n\nCopyright (c) 2017 Douglas Nassif Roma Junior\n```\n\nSee the full [license file](https://github.com/douglasjunior/react-native-keyboard-manager/blob/master/LICENSE).\n\n## IQKeyboardManager License\n\n```\nThe MIT License (MIT)\n\nCopyright (c) 2013-16 Iftekhar Qurashi\n```\n\nSee the full [IQKeyboardManager license file](https://github.com/hackiftekhar/IQKeyboardManager/blob/master/LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdouglasjunior%2Freact-native-keyboard-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdouglasjunior%2Freact-native-keyboard-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdouglasjunior%2Freact-native-keyboard-manager/lists"}