Git Product home page Git Product logo

react-native-keyboard-input's Introduction

React Native Keyboard Input

Presents a React component as an input view which replaces the system keyboard. Can be used for creating custom input views such as an image gallery, stickers, etc.

Supports both iOS and Android.

Installation

Install the package from npm:

yarn add react-native-keyboard-input or npm i --save react-native-keyboard-input

Android

Update your dependencies in android/app/build.gradle:

dependencies {
  // Add this dependency:
  compile project(":reactnativekeyboardinput")
}

Update your android/settings.gradle:

include ':reactnativekeyboardinput'
project(':reactnativekeyboardinput').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keyboard-input/lib/android')

In your MainApplication.java, add to the getPackages() list:

import com.wix.reactnativekeyboardinput.KeyboardInputPackage;

@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
      // Add this package:
      new KeyboardInputPackage(this) // (this = Android application object)
    );
}

ProGuard

If you have pro-guard enabled and are having trouble with your build, apply this to your project's main proguard-rules.pro:

-dontwarn com.wix.reactnativekeyboardinput.**

iOS

Option: Manually

In Xcode, drag both RCTCustomInputController.xcodeproj and KeyboardTrackingView.xcodeproj from your node_modules to the Libraries folder in the Project Navigator, then add libRCTCustomInputController.a and libKeyboardTrackingView.a to your app target "Linked Frameworks and Libraries".

Covering the whold keyboard in predictive mode

To utilize this feature you'll need to add KeyboardTrackingView to your projects scheme build action.

From Xcode menu:

  1. product -> scheme -> manage schemes -> double-click your project
  2. Slect build at the right menu, click the + icon at the bottom of the targets list and select KeyboardTrackingView.
  3. Drag and position KeyboardTrackingView to be first, above your project, and unmark "Parallelize Build" option at the top.

If necessary, you can take a look at how it is set-up in the demo project.

Option: With CocoaPods

Add the following two pods to your Podfile and run pod update:

pod 'react-native-keyboard-input', :path => '../node_modules/react-native-keyboard-input'
pod 'react-native-keyboard-tracking-view', :path => '../node_modules/react-native-keyboard-tracking-view'

Usage

There are 2 main parts necessary for the implementation:

1. A keyboard component

Create a component that you wish to use as a keyboard input. For example:

class KeyboardView extends Component {
  static propTypes = {
    title: PropTypes.string,
  };
  render() {
    return (
      <ScrollView contentContainerStyle={[styles.keyboardContainer, {backgroundColor: 'purple'}]}>
        <Text style={{color: 'white'}}>HELOOOO!!!</Text>
        <Text style={{color: 'white'}}>{this.props.title}</Text>
      </ScrollView>
    );
  }
}

Now register with the keyboard registry so it can be used later as a keyboard:

import {KeyboardRegistry} from 'react-native-keyboard-input';

KeyboardRegistry.registerKeyboard('MyKeyboardView', () => KeyboardView);

When you need to notify about selecting an item in the keyboard, use:

KeyboardRegistry.onItemSelected(`MyKeyboardView`, params);

2. Using the keyboard component as an input view

While this package provides several component and classes for low-level control over custom keyboard inputs, the easiets way would be to use KeyboardAccessoryView. It's the only thing you'll need to show your Keyboard component as a custom input. For example:

<KeyboardAccessoryView
  renderContent={this.keyboardToolbarContent}
  kbInputRef={this.textInputRef}
  kbComponent={this.state.customKeyboard.component}
  kbInitialProp={this.state.customKeyboard.initialProps}
/>
Prop Type Description
renderContent Function a fucntion for rendering the content of the keyboard toolbar
kbInputRef Object A ref to the input component which triggers the showing of the keyboard
kbComponent String The registered component name
kbInitialProps Object Initial props to pass to the registered keyboard component
onItemSelected Function a callback function for a selection of an item in the keyboard component

This component takes care of making your toolbar (which is rendered via renderContent ) "float" above the keyboard (necessary for iOS), and for setting your component as the keyboard input when the kbComponent changes.

Demo

See demoScreen.js for a full working example.

react-native-keyboard-input's People

Contributors

armbox avatar artald avatar d4vidi avatar guyca avatar leonatan avatar ofirdagan avatar radex avatar thorbenandresen avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.