0

我遇到的问题是我不确定如何将 touchupinside 添加到保存日期按钮的以下代码中。我只是想启动一个 UIDatePicker 并将日期提交到文本字段中,然后将其关闭。

所以我不知道如何将这个以编程方式创建的按钮链接到 datePicker 方法。不仅如此,我之前没有使用过 UIDatePicker,因此将其读入文本字段我有点模糊。文本字段是 dateFieldText。

一旦用户点击保存日期,UIDatePicker 就会被关闭。

谢谢您的帮助。这个问题对我来说有点复杂。

      - (void)textFieldDidBeginEditing:(UITextField *)sender
        {
            sender.delegate = self;
                if([sender isEqual:dateFieldText])
                {
                    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
                                               initWithTitle:@"Save Date"
                                               style:UIBarButtonItemStyleDone
                                               target:self
                                               action:@selector(datePicker)];

                self.navigationItem.rightBarButtonItem = doneButton;

            }
            else{
                UIBarButtonItem *submitButton = [[UIBarButtonItem alloc]
                                               initWithTitle:@"Done"
                                               style:UIBarButtonItemStyleDone
                                               target:self
                                               action:@selector(datePicker)];
                self.navigationItem.rightBarButtonItem = submitButton;

            }  
        }


    -(IBAction)datePicker
    {
        UIDatePicker *datePicker = [[UIDatePicker alloc] init];
        datePicker.datePickerMode = UIDatePickerModeDateAndTime;
        [datePicker addTarget:self action:@selector(saveDate)  forControlEvents:UIControlEventValueChanged];
        [self.dateFieldText setInputView:datePicker];
    }

    // I haven't made the saveDate method yet...
4

1 回答 1

1

你有一些连接不正确的东西。您需要在创建文本字段时将日期选择器设置为文本字段的 inputView,而不是在用户点击未添加的按钮之后,直到用户将焦点放在文本字段上。

您也不需要完成按钮和保存日期按钮。要么有一个完成按钮,要么有一个保存和取消按钮。

您还需要实现textFieldDidEndEditing委托方法来删除您添加的任何按钮。

您的saveDate方法将需要使用当前选择的日期更新文本字段的文本(在将日期转换为带有 的字符串之后NSDateFormatter)。

完成/保存/取消按钮的操作(无论您最终做什么)只需调用resignFirstResponder文本字段即可。这将关闭日期选择器。按钮操作可能还需要酌情保存或恢复日期值。

于 2013-03-07T02:19:58.910 回答