美文网首页
KeyboardAvoidingScrollView

KeyboardAvoidingScrollView

作者: mimikiy | 来源:发表于2017-09-04 20:06 被阅读0次
    import React from 'react';
    import ReactNative from 'react-native';
    
    const {
      Keyboard,
      TextInput,
      ScrollView,
      findNodeHandle,
    } = ReactNative;
    
    // tab height + listitem bottom padding + textinput height
    const ADDITIONAL_OFFSET = 35 + 50;
    
    class KeyboardAvoidingScrollView extends React.Component {
      componentWillMount() {
        this.subscriptions = [
          Keyboard.addListener('keyboardDidShow', this.keyboardDidShow),
        ];
      }
    
      componentWillUnmount() {
        this.subscriptions.forEach((sub) => sub.remove());
      }
    
      keyboardDidShow = () => {
        const currentlyFocusedField = TextInput.State.currentlyFocusedField();
        const scrollResponder = this.refs.keyboardAvoidingScrollView.getScrollResponder();
        scrollResponder.scrollResponderScrollNativeHandleToKeyboard(
          findNodeHandle(currentlyFocusedField),
          ADDITIONAL_OFFSET,
          true
        );
      };
    
      render() {
        const { children, ...props } = this.props;
    
        return (
          <ScrollView
            {...props}
            ref="keyboardAvoidingScrollView"
            keyboardDismissMode="on-drag"
          >
            {children}
          </ScrollView>
        );
      }
    }
    
    KeyboardAvoidingScrollView.propTypes = {
      ...ScrollView.propTypes,
    };
    
    export default KeyboardAvoidingScrollView;
    

    相关文章

      网友评论

          本文标题:KeyboardAvoidingScrollView

          本文链接:https://www.haomeiwen.com/subject/zkxyjxtx.html