在React Native中触摸TextInput时打开键盘和/或DatePickerIOS

时间:2016-04-12 22:22:31

标签: javascript javascript-events event-handling react-native

我是React Native的新手,我只是想在触摸TextInput时从屏幕底部向上滑动DatePickerIOS组件。

有人可以指出我正确的方向或给我一个简单的例子吗?

以下是我的组件。这很简单。我试图让用户触摸TextInput时打开键盘或DatePickerIOS。

import React, {
  AppRegistry,
  Component,
  StyleSheet,
  Text,
  TextInput,
  View,
  DatePickerIOS
} from 'react-native';

class AddChildVisit extends Component {

render() {
  return (
    <View>
      <Text>Visit Date</Text>
      <TextInput
        style={{height: 40, width: 300, padding: 4, borderColor: 'gray', borderWidth: 1}}
        keyboardType= 'numeric'
      />
      <DatePickerIOS
        date={new Date()}
        mode="date"
      />
    </View>
  );
 }


}


module.exports = AddChildVisit;

2 个答案:

答案 0 :(得分:5)

我正在使用DatePickerIOS,这是一个示例我该怎么做:

import React, {
    AppRegistry,
    Component,
    StyleSheet,
    Text,
    TouchableOpacity,
    TextInput,
    View,
    DatePickerIOS
} from "react-native";

var moment = require('moment');

class AddChildVisit extends Component {
    constructor(props) {
        super(props);
        this.state = {
            date: new Date(),
            showDatePicker: false 
        }
    }

    render() {
        var showDatePicker = this.state.showDatePicker ?
            <DatePickerIOS
                style={{ height: 150 }}
                date={this.state.date} onDateChange={(date)=>this.setState({date})}
                mode="date"/> : <View />
        return (
            <View>
                <Text>Visit Date</Text>
                <TouchableOpacity style={{height: 40, width: 300, padding: 4, borderColor: 'gray', borderWidth: 1}}
                                  onPress={() => this.setState({showDatePicker: !this.state.showDatePicker})}>
                    <Text>{moment(this.state.date).format('DD/MM/YYYY')}</Text>
                </TouchableOpacity>
                {showDatePicker}
            </View>
        );
    }


}

module.exports = AddChildVisit;

当您按下TouchableOpacity时,将显示datepicker,因为您触发了标记以显示它,如果再次按下它,它将关闭。我也使用片刻打印日期,因为我收到了错误,我无法将对象放入文本组件等。要使用此示例,您需要安装时刻,您可以这样做:npm install moment --save,我已经在上面的代码示例中使用它,您可以看到var moment = require('moment'),并再次在文本{moment(this.state.date).format('DD/MM/YYYY')}中打印日期。如果您不想安装/使用它,只需从我的示例中删除行 - 但是您的日期将不会打印出来。我不确定如何用TextInput调用日期选择器,因为它必须触发键盘,当我有日期选择器时,我真的不需要键盘。我希望它有所帮助:)

答案 1 :(得分:1)

另一种方法是使用包react-native-datepicker并在两个平台的Android / iOS https://www.npmjs.com/package/react-native-datepicker

上运行