隐藏文本字段的键盘并显示日期选择器

时间:2009-11-10 09:48:40

标签: iphone

我有一个表格,我需要输入开始日期和结束日期才能查看交易。 当我将焦点设置在textfirld上时,我可以看到键盘,但在它后面会出现日期选择器。 我如何删除键盘并仅显示日期选择器

6 个答案:

答案 0 :(得分:3)

我自己也在努力,找到了解决方案。你可以这样做:

- (void)viewDidLoad 
{
    [super viewDidLoad];
// set delegate for date text field
    dateField.delegate = self;
}

// Display the picker instead of a keyboard
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    [self showDatePicker];
    return NO;

}

这假设您已经声明了一个名为showDatePicker的方法,该方法处理UIPicker显示。

答案 1 :(得分:2)

听起来不是标准的键盘,而是想要显示自己的日期选择器视图。我相信您可以通过设置文本域的委托然后提供来处理 textFieldShouldBeginEditing。

//在viewWillAppear中设置文本字段委托(如果需要)

   ...
   myTextField.delegate = self;
   ...

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

        // if date picker not in display, show it here...

        return NO;
    }

答案 2 :(得分:1)

您可以通过某些按钮单击方法调用[myTextField resignFirsrResponder],例如,在textFieldShouldReturn委托方法中调用[myTextField resignFirsrResponder]。喜欢这样的

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return YES;
}

答案 3 :(得分:1)

答案 4 :(得分:0)

很简单,在viewController.h中放置UITextFieldDelegate。在viewDidLoad之后。

 txtFecha.delegate = self;

datePicker = [[UIDatePicker alloc]init];
[datePicker setDatePickerMode:UIDatePickerModeDate];

self.txtFecha.inputView = datePicker;

答案 5 :(得分:0)

现在您可以使用UITextField的 inputView inputAccessoryView 。 在.h文件中声明,在.m文件中声明@synthesize。

@property (nonatomic, retain) IBOutlet UIToolbar    *_accessoryView;
@property (nonatomic, retain) IBOutlet UIDatePicker *_datePickerView;

将它们连接到.xib文件中的文件所有者,确保它不在self.view中。

- (void)viewDidLoad
    {   
        _dateOfBirthTextField.inputView = self._datePickerView;
        _dateOfBirthTextField.inputAccessoryView = self._toolbar;
    }

还要编写函数以从选择器中获取日期

#pragma mark- UITextField with UIDatePicker-

- (IBAction)dateChanged:(id)sender {
    UIDatePicker *picker = (UIDatePicker *)sender;
    _dateOfBirthTextField.text = [NSString stringWithFormat:@"%@", picker.date];
}

- (IBAction)doneEditing:(id)sender {
    [_dateOfBirthTextField resignFirstResponder];
}

在valueChanged上添加dateChanged:IBAction:_datePicker的动作。 和doneEditing:工具栏按钮操作上的IBAction。