在UIToolBar上使用Done按钮关闭UIPickerView

Leg*_*las 4 cocoa-touch objective-c uipickerview uitoolbar ios

我只是尝试在解除UIPickerView导航栏上的按钮或选择器视图上方工具栏上的"完成"按钮时更好.我已经实现了两个按钮,我试图解除选择器视图并辞职第一响应者.

如何UIPickerView使用工具栏上的"完成"按钮关闭?

这是我的代码UIToolBar:

UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init];
keyboardDoneButtonView.barStyle = UIBarStyleBlack;
keyboardDoneButtonView.translucent = YES;
keyboardDoneButtonView.tintColor = nil;
[keyboardDoneButtonView sizeToFit];
UIBarButtonItem* doneButton = [[[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                style:UIBarButtonItemStyleBordered target:self
                                                               action:@selector(pickerDoneClicked:)] autorelease];

[keyboardDoneButtonView setItems:[NSArray arrayWithObjects:doneButton, nil]];

textField.inputAccessoryView = keyboardDoneButtonView;
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

jus*_*tin 22

虽然我确信我的测试应用程序比较简单,但我希望这个结构对您来说仍然有效.

从本质上讲,这就是我所做的一切.我有一个UIPickerView,UIDatePickerViewUITextField在IB中设立.pickerView dataSourcedelegate都链接到File的Owner,就像delegatetextField一样.

在我的标题中,我使用以下结构声明它们

UISomething *object;
@property (nonatomic, retain) IBOutlet UISomething *object;
Run Code Online (Sandbox Code Playgroud)

我也有协议链接(<UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate>).在实现文件中,所有内容都是合成的.然后viewDidLoad,我有这个.

- (void)viewDidLoad
{
    UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init];
    keyboardDoneButtonView.barStyle = UIBarStyleBlack;
    keyboardDoneButtonView.translucent = YES;
    keyboardDoneButtonView.tintColor = nil;
    [keyboardDoneButtonView sizeToFit];
    UIBarButtonItem* doneButton = [[[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                    style:UIBarButtonItemStyleBordered target:self
                                                                   action:@selector(pickerDoneClicked:)] autorelease];

    [keyboardDoneButtonView setItems:[NSArray arrayWithObjects:doneButton, nil]];

    textField.inputAccessoryView = keyboardDoneButtonView;
    [datePicker removeFromSuperview];
    [pickerView removeFromSuperview];
    [super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)

当textField变为活动状态时,我会调用它

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    [self.view addSubview:pickerView];
    [self.view addSubview:datePicker];
}
Run Code Online (Sandbox Code Playgroud)

最后,还有动作方法

- (IBAction)pickerDoneClicked:(id)sender {
    [datePicker removeFromSuperview];
    [pickerView removeFromSuperview];
    [textField resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

这一切都适合我.一切都得到了显示和删除.所以运气好的话,这也可以帮到你