2016-11-02 42 views
1

我正在嘗試使用react-native-keyboard-aware-scroll-view,因此鍵盤不能覆蓋我的輸入。react-native-keyboard-aware-scroll-view無法正常工作

出於某種原因,它總是認爲有一個鍵盤活躍,我猜,因爲它總是壓縮一切。

附件是發生了什麼以及代碼的圖片。任何人有任何想法發生什麼事在這裏?我一直在玩它一段時間,並沒有運氣。我正在運行react-native v 0.33和react-native-keyboard-aware-scroll-view v 0.2.1。

https://www.npmjs.com/package/react-native-keyboard-aware-scroll-view

enter image description here

import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'; 


class LoginIOS extends Component{ 

    constructor(props) { 
    super(props); 
    this.login = this.login.bind(this); 
    this.renderScene = this.renderScene.bind(this); 
    this.state={ 
     username: '', 
     password: '' 
    }; 
    } 

    render() { 
    return (
     <Navigator 
      renderScene={this.renderScene} 
      navigator={this.props.navigator} 
      navigationBar={ 
      <Navigator.NavigationBar style={{backgroundColor: 'transparent'}} 
       routeMapper={NavigationBarRouteMapper} /> 
      } /> 
    ); 
    } 

    renderScene() { 
    return (
    <KeyboardAwareScrollView> 
     <View style={styles.container}> 
     <Spinner visible={this.state.visible} /> 
     <StatusBar barStyle="light-content" hidden={true}/> 
     <View style={styles.topContainer}> 
      <View style={styles.bannerContainer}> 
      <View style={{flexDirection: 'column', flex: 1, justifyContent: 'center', alignItems: 'center'}}> 
       <Image style={styles.mark} source={require('***')} /> 
      </View> 
      </View> 
      <View style={styles.credentialContainer}> 
       <View style={styles.inputContainer}> 
        <Icon style={styles.inputPassword} name="person" size={28} color="#FFCD00" /> 
         <View style={{flexDirection: 'row', flex: 1, marginLeft: 2, marginRight: 2, borderBottomColor: '#e0e0e0', borderBottomWidth: 2}}> 
         <TextInput 
          style={styles.input} 
          placeholder="Username" 
          autoCorrect={false} 
          autoCapitalize="none" 
          returnKeyType="next" 
          placeholderTextColor="#e0e0e0" 
          onChangeText={(text) => this.setState({username: text})} 
          value={this.state.username} 

          > 

         </TextInput> 
         </View> 
       </View> 

       <View style={styles.inputContainer}> 
        <Icon style={styles.inputPassword} name="lock" size={28} color="#FFCD00" /> 
         <View style={{flexDirection: 'row', flex: 1, marginLeft: 2, marginRight: 2, borderBottomColor: '#e0e0e0', borderBottomWidth: 2}}> 
         <TextInput 
          style={styles.input} 
          placeholder="Password" 
          returnKeyType="done" 
          autoCorrect={false} 
          secureTextEntry={true} 
          placeholderTextColor="#e0e0e0" 
          onChangeText={(text) => this.setState({password: text})} 
          value={this.state.password} 
          onSubmitEditing={(event)=> { 
           this.login(); 
          }} 
          > 
         </TextInput> 
         </View> 
       </View> 
       <TouchableOpacity style={styles.forgotContainer}> 
       </TouchableOpacity> 
      </View> 

     </View> 

     <TouchableHighlight 
      underlayColor="#D6AB00" 
      onPress={this.login} 
      style={styles.signInButtonContainer}> 
      <Text style={styles.signInText}>Sign In</Text> 
     </TouchableHighlight> 

     </View> 
    </KeyboardAwareScrollView> 

    ); 
    } 

回答

0

您還可以使用動畫視圖滾動視圖不能有絕對的觀點或固定的部件。所以聆聽鍵盤事件並進​​行調整可以正常工作。

onKeyboarDidShow(e) { 
    //LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) 
    Animated.timing(this.relativeBottom, { 
    duration: e.duration, 
    toValue: Dimensions.get('window').height-em(64)-e.endCoordinates.height 
    }).start() 
} 

onKeyboardWillHide(e) { 
    //LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) 
    Animated.timing(this.relativeBottom, { 
    duration: e.duration, 
    toValue: Dimensions.get('window').height-em(64) 
    }).start() 
} 

componentWillMount() { 
    this._didShowListener = Keyboard.addListener('keyboardWillShow', this.onKeyboarDidShow.bind(this)); 
    this._willHideListener = Keyboard.addListener('keyboardWillHide', this.onKeyboardWillHide.bind(this)); 
} 

componentWillUnmount() { 
    this._didShowListener.remove(); 
    this._willHideListener.remove(); 
} 
+0

什麼是EM(64)? – VishAl

0

個人解決了這個利用柔性...

<KeyboardAwareScrollView contentContainerStyle={{flex: 1}}> 
    <View style={{flex: 1}}>