Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我有两个文本字段,我需要在IOS中打开日期选择器和另一个时间选择器_Ios_Objective C_Iphone_Uidatepicker_Nsdatepicker - Fatal编程技术网

我有两个文本字段,我需要在IOS中打开日期选择器和另一个时间选择器

我有两个文本字段,我需要在IOS中打开日期选择器和另一个时间选择器,ios,objective-c,iphone,uidatepicker,nsdatepicker,Ios,Objective C,Iphone,Uidatepicker,Nsdatepicker,我有两个文本字段,如果我点击第一个,我需要打开Datepicker,当我点击第二个文本字段时,我需要打开timepicker。但是代码在viewdidload中可用,所以我不知道如何单独调用它 我要求,当我点击第一个文本框时,它应该打开数据选择器,当我点击第二个文本框时,它应该打开时间选择器 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view.

我有两个文本字段,如果我点击第一个,我需要打开Datepicker,当我点击第二个文本字段时,我需要打开timepicker。但是代码在viewdidload中可用,所以我不知道如何单独调用它

我要求,当我点击第一个文本框时,它应该打开数据选择器,当我点击第二个文本框时,它应该打开时间选择器

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
   [[self navigationController] setNavigationBarHidden:YES animated:YES];
    //[self.navigationItem.rightBarButtonItem.customView setHidden:NO];


    dateformater = [[NSDateFormatter alloc]init];
    datepictxt.delegate = self;
        UITextField *textField = (UITextField*)[self.view viewWithTag:1];
    datepicker = [[UIDatePicker alloc]init];

    if (textField.tag)
    {
        datepicker.datePickerMode = UIDatePickerModeDate;
        [self.datepictxt setInputView:datepicker];


        UIToolbar * toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
        [toolbar setTintColor:[UIColor grayColor]];
        UIBarButtonItem *donebtn = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showselectiondate:)];
        UIBarButtonItem *space = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
        [toolbar setItems:[NSArray arrayWithObjects:space,donebtn, nil]];
        [self.datepictxt setInputAccessoryView:toolbar];

    }
    else
    {

        datepicker.datePickerMode = UIDatePickerModeTime;
        [self.Timepicker setInputView:datepicker];


        UIToolbar * toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
        [toolbar setTintColor:[UIColor grayColor]];
        UIBarButtonItem *donebtn = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showselectiontime:)];
        UIBarButtonItem *space = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
        [toolbar setItems:[NSArray arrayWithObjects:space,donebtn, nil]];
        [self.Timepicker setInputAccessoryView:toolbar];



    }

}

-(void)showselectiontime:(id)response
{

    [dateformater setDateFormat:@"hh:mm a"];
    self.Timepicker.text= [NSString stringWithFormat:@"%@",[dateformater stringFromDate:datepicker.date]];

    [self.Timepicker resignFirstResponder];

}

-(void)showselectiondate:(id)response
{

    [dateformater setDateFormat:@"dd/MM/yyyy"];
    self.datepictxt.text= [NSString stringWithFormat:@"%@",[dateformater stringFromDate:datepicker.date]];

    [self.datepictxt resignFirstResponder];

}

这可以通过以下方式完成:

- (void)setDatePickerAsInputViewForTextField: (UITextField *)textField {
     // creating UIDatePicker with UIDatePickerModeDate
     UIDatePicker *datepicker = [[UIDatePicker alloc] init];
datepicker.datePickerMode = UIDatePickerModeDate;

     // creating toolbar above to dismiss the UIDatePicker after selecting date
     UIToolbar *inputAccessoryToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
     UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showSelectedDate:)];
     UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
     [inputAccessoryToolBar setItems:@[doneButton, spaceButton]];

     // Adding UIDatePicker object as an inputView to the UITextField so that it appears in place of Keyboard
     [textField setInputView:datepicker];
     [textField setInputAccessoryView:inputAccessoryToolBar];
}

-(void)showSelectedDate:(id)picker {
     [self.view resignFirstResponder]; // to dismiss UITextField
     // remaining code to extract date from picker
 }
假设您有两个文本字段:

@property (nonatomic) UITextField *datePickerTextField;

@property (nonatomic) UITextField *timePickerTextField;
您可以通过以下方式将
UIDatePicker
添加为
inputView

- (void)setDatePickerAsInputViewForTextField: (UITextField *)textField {
     // creating UIDatePicker with UIDatePickerModeDate
     UIDatePicker *datepicker = [[UIDatePicker alloc] init];
datepicker.datePickerMode = UIDatePickerModeDate;

     // creating toolbar above to dismiss the UIDatePicker after selecting date
     UIToolbar *inputAccessoryToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
     UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showSelectedDate:)];
     UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
     [inputAccessoryToolBar setItems:@[doneButton, spaceButton]];

     // Adding UIDatePicker object as an inputView to the UITextField so that it appears in place of Keyboard
     [textField setInputView:datepicker];
     [textField setInputAccessoryView:inputAccessoryToolBar];
}

-(void)showSelectedDate:(id)picker {
     [self.view resignFirstResponder]; // to dismiss UITextField
     // remaining code to extract date from picker
 }
同样地

- (void)setTimePickerAsInputViewForTextField: (UITextField *)textField {

     UIDatePicker *timepicker = [[UIDatePicker alloc] init];
timepicker.datePickerMode = UIDatePickerModeTime;

     UIToolbar *inputAccessoryToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
     UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showSelectedTime:)];
     UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
     [inputAccessoryToolBar setItems:@[doneButton, spaceButton]];

     [textField setInputView:datepicker];
     [textField setInputAccessoryView:inputAccessoryToolBar];
}

-(void)showSelectedTime:(id)picker {
     [self.view resignFirstResponder]; // to dismiss UITextField
     // remaining code to extract date from picker
}

这可以通过以下方式完成:

- (void)setDatePickerAsInputViewForTextField: (UITextField *)textField {
     // creating UIDatePicker with UIDatePickerModeDate
     UIDatePicker *datepicker = [[UIDatePicker alloc] init];
datepicker.datePickerMode = UIDatePickerModeDate;

     // creating toolbar above to dismiss the UIDatePicker after selecting date
     UIToolbar *inputAccessoryToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
     UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showSelectedDate:)];
     UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
     [inputAccessoryToolBar setItems:@[doneButton, spaceButton]];

     // Adding UIDatePicker object as an inputView to the UITextField so that it appears in place of Keyboard
     [textField setInputView:datepicker];
     [textField setInputAccessoryView:inputAccessoryToolBar];
}

-(void)showSelectedDate:(id)picker {
     [self.view resignFirstResponder]; // to dismiss UITextField
     // remaining code to extract date from picker
 }
假设您有两个文本字段:

@property (nonatomic) UITextField *datePickerTextField;

@property (nonatomic) UITextField *timePickerTextField;
您可以通过以下方式将
UIDatePicker
添加为
inputView

- (void)setDatePickerAsInputViewForTextField: (UITextField *)textField {
     // creating UIDatePicker with UIDatePickerModeDate
     UIDatePicker *datepicker = [[UIDatePicker alloc] init];
datepicker.datePickerMode = UIDatePickerModeDate;

     // creating toolbar above to dismiss the UIDatePicker after selecting date
     UIToolbar *inputAccessoryToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
     UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showSelectedDate:)];
     UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
     [inputAccessoryToolBar setItems:@[doneButton, spaceButton]];

     // Adding UIDatePicker object as an inputView to the UITextField so that it appears in place of Keyboard
     [textField setInputView:datepicker];
     [textField setInputAccessoryView:inputAccessoryToolBar];
}

-(void)showSelectedDate:(id)picker {
     [self.view resignFirstResponder]; // to dismiss UITextField
     // remaining code to extract date from picker
 }
同样地

- (void)setTimePickerAsInputViewForTextField: (UITextField *)textField {

     UIDatePicker *timepicker = [[UIDatePicker alloc] init];
timepicker.datePickerMode = UIDatePickerModeTime;

     UIToolbar *inputAccessoryToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
     UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showSelectedTime:)];
     UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
     [inputAccessoryToolBar setItems:@[doneButton, spaceButton]];

     [textField setInputView:datepicker];
     [textField setInputAccessoryView:inputAccessoryToolBar];
}

-(void)showSelectedTime:(id)picker {
     [self.view resignFirstResponder]; // to dismiss UITextField
     // remaining code to extract date from picker
}

您应该使用textField委托

-(BOOL)textField应该开始编辑:(UITextField*)textField

用于选择要为文本字段打开的选择器

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;{
    if(textField==self.datepictxt){

// show date picker

            }
    }
目前我认为您的if声明:

 if (textField.tag)

始终为true,因此它显示日期,或者您需要分配一个新的日期选择器,而不是在时间和日期模式中使用相同的日期选择器。

您应该使用textField委托

-(BOOL)textField应该开始编辑:(UITextField*)textField

用于选择要为文本字段打开的选择器

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;{
    if(textField==self.datepictxt){

// show date picker

            }
    }
目前我认为您的if声明:

 if (textField.tag)

始终为真,因此它显示日期,或者您需要分配一个新的日期选择器,而不是在时间和日期模式中使用相同的日期选择器。

当前这是如何操作的?当你点击相关的文本字段时,会发生什么呢?我只得到DatePicker而不是timepicker
UITextField*textField=(UITextField*)[self.view view withtag:1]此行正在查找标记1的文本字段,您正在检查始终为1的同一标记。因此,如果始终执行block.so如何解决plse Suggests根据我的理解,您应该实现
textfielddBeginediting:
from
UITextField
,并将
if-else
块保留在该方法中。比较tag或textField对象本身以确定选取器模式,然后显示选取器。目前这是如何操作的?当你点击相关的文本字段时,会发生什么呢?我只得到DatePicker而不是timepicker
UITextField*textField=(UITextField*)[self.view view withtag:1]此行正在查找标记1的文本字段,您正在检查始终为1的同一标记。因此,如果始终执行block.so如何解决plse Suggests根据我的理解,您应该实现
textfielddBeginediting:
from
UITextField
,并将
if-else
块保留在该方法中。比较标记或textField对象本身以确定选取器模式,然后显示选取器。我尝试了textFieldShouldBeginEditing,因为您说它正在工作,我犯了一个错误,我没有在viewdidload Timepicker.delegate=self中添加此项;因此,只有在这五天之后才能获得datepicker,请找出问题并解决它,谢谢。我尝试了TextField ShouldBeginediting,因为你说它正在工作,我犯了一个错误,我没有在viewdidload Timepicker.delegate=self中添加此项;因此,只有在这五天之后找到datepicker,才能找出问题并解决它,谢谢。