如何将UIPickerView设置为inputView到iPhone中的UITextField

问题描述:

我试图打开UIPickerView作为inputView到UITextfield如何将UIPickerView设置为inputView到iPhone中的UITextField

这是我在textFieldDidBeginEditing代码:

UIPickerView *categoryPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 43, 320, 480)]; 
    categoryPicker.delegate = self; 
    categoryPicker.dataSource = self; 
    [categoryPicker setShowsSelectionIndicator:YES]; 
    txtCategory.inputView = categoryPicker; 

    UIToolbar *_providerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 56)]; 
    _providerToolbar.barStyle = UIBarStyleBlackOpaque; 
    [_providerToolbar sizeToFit]; 

    NSMutableArray *barItems = [[NSMutableArray alloc] init]; 
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
    [barItems addObject:flexSpace]; 

    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissActionSheet)]; 

    [barItems addObject:doneBtn]; 

    [_providerToolbar setItems:barItems animated:YES]; 
    txtCategory.inputAccessoryView = _providerToolbar; 

它的正常工作的第一次,但是当我从UIPickerView选择任意值,它的隐藏和我UITextfield是编辑和UIPickerView不当时显示。我究竟做错了什么?

+1

我不会把这些代码在'textFieldDidBeginEditing:',该方法被调用后'UITextField'已经成为第一个响应者,可能是什么原因造成您的问题。尝试将此代码移至'viewDidLoad'。 –

我建议你把你的代码移动到viewDidLoad:。因为在textField为其加载键盘时调用textFieldDidBeginEditing:。所以现在不适合改变textField的inputAccessoryView

Use this... 

    NSDate *now = [NSDate date]; 

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 

    [dateFormat setDateFormat:@"dd MMM, yyyy"]; 

    UIDatePicker *datePicker = [[UIDatePicker alloc] init]; 

    [datePicker setMaximumDate:now]; 

    datePicker.datePickerMode = UIDatePickerModeDate; 

    txtForDate.text = [dateFormat stringFromDate:datePicker.date]; 

    [datePicker addTarget:self action:@selector(updateTextField:) 
     forControlEvents:UIControlEventValueChanged]; 

    [txtForDate setInputView:datePicker]; 

// txtForDate是的UITextField