选择UITextField时如何显示UIPickerView

sil*_*sam 19 objective-c uipickerview uitextfield ios

这是我到目前为止所做的截图:

在此输入图像描述

所以我要做的就是当你选择"选择一个名字"Textfield我需要一个Picker来显示,输入@"Jack".

Tom*_*Tom 67

从iOS 3.2开始,UITextField支持inputView属性分配自定义视图以用作键盘,这提供了一种显示方式UIPickerView:

您可以使用该inputView属性UITextField,可能与该inputAccessoryView属性结合使用.您将自己分配pickerView给该inputView属性,并且为了解除选择器,将inputAccessoryView属性的完成按钮分配给该属性.

UIPickerView *myPickerView = [[UIPickerView alloc] init];
//myPickerView configuration here...
myTextField.inputView = myPickerView;
Run Code Online (Sandbox Code Playgroud)

像那样.由于您UIPickerView没有返回按钮,因此我不建议您直接关闭视图,这就是为什么我建议使用该inputAccessoryView属性来显示带有完成按钮的工具栏(该栏仅用于美观,您可能只是使用一个UIButton对象):

UIToolbar *myToolbar = [[UIToolbar alloc] initWithFrame:
 CGRectMake(0,0, 320, 44)]; //should code with variables to support view resizing
UIBarButtonItem *doneButton =
 [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
 target:self action:@selector(inputAccessoryViewDidFinish)];
 //using default text field delegate method here, here you could call
 //myTextField.resignFirstResponder to dismiss the views
[myToolbar setItems:[NSArray arrayWithObject: doneButton] animated:NO];
myTextField.inputAccessoryView = myToolbar;
Run Code Online (Sandbox Code Playgroud)

  • 谢谢. - (void)inputAccessoryViewDidFinish {[self.myTextField resignFirstResponder]; } (2认同)

the*_*ign 14

我使用它,发现这比添加子视图和动画更清晰 UIPicker

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
responder = textField;

    if ([textField isEqual:self.txtBirthday]) {
    UIDatePicker *datepicker = [[UIDatePicker alloc] initWithFrame:CGRectZero];
    [datepicker setDatePickerMode:UIDatePickerModeDate];

    textField.inputView = datepicker;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)


PJR*_*PJR 4

它会为你工作..我已经编辑了它。为此你必须为文本字段设置委托。并在 NIb 文件中创建 UIPIckrView。

- (BOOL) textFieldShouldBeginEditing:(UITextView *)textView
{
    pickrView.frame = CGRectMake(0, 500, pickrView.frame.size.width,    pickrView.frame.size.height);
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.50];
    [UIView setAnimationDelegate:self];
    pickrView.frame = CGRectMake(0, 200, pickrView.frame.size.width, pickrView.frame.size.height);
    [self.view addSubview:pickrView];
    [UIView commitAnimations];
    return NO;
}
Run Code Online (Sandbox Code Playgroud)