1

当 UITextField 是 firstResponder 时,我想在没有“向下键盘”的情况下将 UIDatePicker(屏幕底部)放在前面(不调用 UITextField resignFirstResponder)。

目的是像 UITextField 的 UIKeyboard 一样处理,当它成为FirstResponder 时,几乎所有内容都会弹出。modalViewController 似乎只是全屏的。


- showDatePicker:(id)sender {
    if([taskName isFirstResponder]) [taskName resignFirstResponder];
    [self.view.window addSubview: self.pickerView];

    // size up the picker view and compute the start/end frame origin
    (...)
    [UIView commitAnimations];

}

这个例子是一个键盘向下的动画,而 DatePicker 向上的动画,在后面而不是在前面。

你知道解决方案吗?一段代码将受到欢迎。提前致谢。

4

2 回答 2

8

这只需将文本字段的输入视图设置为选取器视图即可。然后,在编辑确实开始告诉选择器视图成为第一响应者。像这样

textField.inputView = pickerView

然后使用编辑开始时调用的 IBAction

-(IBAction) setPickerViewAsFirstResponder:(id)sender
{
    [pickerView becomeFirstResponder];
}

这完美地工作。您需要实现代码以实际将选取器视图当前显示的内容设置为文本字段中的字符串。

于 2011-12-01T01:17:21.667 回答
2

这绝对可以做到...只需 UIViewController <UITextFieldDelegate>在您的设置后执行以下方法.h

长话短说,这会在文本编辑开始之前覆盖键盘加载。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    // Make a new view, or do what you want here
    UIDatePicker *pv = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,245,0,0)];
    [self.view addSubview:pv];
    return NO;  
}
于 2011-02-08T21:55:37.027 回答