无法从 UIToolbar 退出 UIPickerview

Posted

技术标签:

【中文标题】无法从 UIToolbar 退出 UIPickerview【英文标题】:Unable to Resign UIPickerview from UIToolbar 【发布时间】:2015-02-03 21:22:22 【问题描述】:

我有一个 UItable,里面有一个 UItextbox。当用户点击文本框时,会显示 UIPickerView 并允许用户做出选择。 UIPickerView 有一个带有完成按钮的工具栏。我无法通过完成按钮退出 UIPickerView。

我有多个 UIPickerViews,因为这是一个要求。所以我把我的工具栏放在它自己的方法中以重复使用它。

选择器委托方法都可以工作并填充正确的文本并更新文本框。我就是无法让选择器关闭。

在我的 viewDidLoad

self.toolbar = [[UIToolbar alloc] init];

    self.pickerColor = [[UIPickerView alloc] init];
    [self.pickerColor setDataSource:self];
    [self.pickerColor setDelegate:self];
    self.pickerColor.showsSelectionIndicator = YES;
    self.txt_color.delegate = self;
    self.txt_color.inputView = self.pickerColor;
    self.txt_color.inputAccessoryView = [self returnPickerToolbar];

还有其他的选择器(pickerShape、pickerNumber)都有对应的文本框。

工具栏

- (UIToolbar*) returnPickerToolbar 
    UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];


    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                   style:UIBarButtonItemStyleDone target:self
                                                                  action:@selector(doneData:)];

    [self.toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]];
    return self.toolbar;

完成按钮

- (void) doneData : (id) sender 
    UIPickerView * picker = (UIPickerView*)sender;
    [picker resignFirstResponder];


【问题讨论】:

【参考方案1】:

您需要resignResponderUITextField 而不是UIPickerView。 您的选择器是该文本字段的 inputView,因此该文本字段的辞职响应者将自动关闭该选择器。

- (void)doneData:(id) sender

    [self.txt_color resignFirstResponder];
    // Also you can use [self.view endEditing];

【讨论】:

@Firemarble : 检查完成按钮事件是否触发【参考方案2】:

如果 UIPickerView 是 UITextField 的 inputView,那么你应该将你的 Toolbar 设置为 UITextfield 的 inputAccessoryView。然后应该启用工具栏上的所有按钮。

【讨论】:

以上是关于无法从 UIToolbar 退出 UIPickerview的主要内容,如果未能解决你的问题,请参考以下文章

从 UIPicker 进行选择时尝试显示图像和标签

无法粘贴 UIPicker 文本着色

无法设置默认值 UIPicker swift 2

获取 UIPicker 第一行的值

UIPicker 从 NSUserDefaults 中选择双值

从单个 UIPicker 获取两个标签的值