From 38197c8230657d567170cdaf8ff4bbb4aee732b8 Mon Sep 17 00:00:00 2001 From: Peter Argany Date: Tue, 27 Feb 2018 10:42:44 -0800 Subject: [PATCH] Support Input Accessory View (iOS Only) [1/N] Reviewed By: mmmulani Differential Revision: D6886573 fbshipit-source-id: 71e1f812b1cc1698e4380211a6cedd59011b5495 --- .../TextInput/InputAccessoryView.js | 114 ++++++++++++++++++ Libraries/Components/TextInput/TextInput.js | 7 ++ .../Text/RCTText.xcodeproj/project.pbxproj | 18 +++ .../Text/TextInput/RCTBaseTextInputView.h | 1 + .../Text/TextInput/RCTBaseTextInputView.m | 38 +++++- .../TextInput/RCTBaseTextInputViewManager.m | 1 + .../Text/TextInput/RCTInputAccessoryView.h | 19 +++ .../Text/TextInput/RCTInputAccessoryView.m | 69 +++++++++++ .../TextInput/RCTInputAccessoryViewContent.h | 14 +++ .../TextInput/RCTInputAccessoryViewContent.m | 75 ++++++++++++ .../TextInput/RCTInputAccessoryViewManager.h | 12 ++ .../TextInput/RCTInputAccessoryViewManager.m | 28 +++++ RNTester/js/TextInputExample.ios.js | 37 ++++++ 13 files changed, 427 insertions(+), 6 deletions(-) create mode 100644 Libraries/Components/TextInput/InputAccessoryView.js create mode 100644 Libraries/Text/TextInput/RCTInputAccessoryView.h create mode 100644 Libraries/Text/TextInput/RCTInputAccessoryView.m create mode 100644 Libraries/Text/TextInput/RCTInputAccessoryViewContent.h create mode 100644 Libraries/Text/TextInput/RCTInputAccessoryViewContent.m create mode 100644 Libraries/Text/TextInput/RCTInputAccessoryViewManager.h create mode 100644 Libraries/Text/TextInput/RCTInputAccessoryViewManager.m diff --git a/Libraries/Components/TextInput/InputAccessoryView.js b/Libraries/Components/TextInput/InputAccessoryView.js new file mode 100644 index 00000000000..cd12758435f --- /dev/null +++ b/Libraries/Components/TextInput/InputAccessoryView.js @@ -0,0 +1,114 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @providesModule InputAccessoryView + * @flow + * @format + */ +'use strict'; + +const ColorPropType = require('ColorPropType'); +const React = require('React'); +const StyleSheet = require('StyleSheet'); +const ViewPropTypes = require('ViewPropTypes'); + +const requireNativeComponent = require('requireNativeComponent'); + +const RCTInputAccessoryView = requireNativeComponent('RCTInputAccessoryView'); + +/** + * Note: iOS only + * + * A component which enables customization of the keyboard input accessory view. + * The input accessory view is displayed above the keyboard whenever a TextInput + * has focus. This component can be used to create custom toolbars. + * + * To use this component wrap your custom toolbar with the + * InputAccessoryView component, and set a nativeID. Then, pass that nativeID + * as the inputAccessoryViewID of whatever TextInput you desire. A simple + * example: + * + * ```ReactNativeWebPlayer + * import React, { Component } from 'react'; + * import { AppRegistry, TextInput, InputAccessoryView, Button } from 'react-native'; + * + * export default class UselessTextInput extends Component { + * constructor(props) { + * super(props); + * this.state = {text: 'Placeholder Text'}; + * } + * + * render() { + * const inputAccessoryViewID = "uniqueID"; + * return ( + * + * + * this.setState({text})} + * value={this.state.text} + * /> + * + * + *