如何将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不当时显示。我究竟做错了什么?
答
我建议你把你的代码移动到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
我不会把这些代码在'textFieldDidBeginEditing:',该方法被调用后'UITextField'已经成为第一个响应者,可能是什么原因造成您的问题。尝试将此代码移至'viewDidLoad'。 –