ios - 无法从 UIToolbar 中退出 UIPickerview

标签 ios objective-c delegates uipickerview uitoolbar

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

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

选择器委托(delegate)方法全部工作并填充正确的文本并更新文本框。我就是无法让选择器关闭。

在我的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];

}

最佳答案

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

- (void)doneData:(id) sender
{
    [self.txt_color resignFirstResponder];
    // Also you can use [self.view endEditing];
}

关于ios - 无法从 UIToolbar 中退出 UIPickerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309013/

相关文章:

c++ - 将 self 从 Objective C 传递到 C++,不再重新分配

ios - 从另一个类/方法调用委托(delegate)方法(特别是 didSelectRowAtIndexPath)

objective-c - 将上下文添加到 UI 控件或 NSObject

ios - Main.storyboard 和 ViewController.swift 如何绑定(bind)到一个空的 iOS 项目中?

ios - Firebase 数据库持久存储

ios - 如何根据其中的元素更改 UIView 高度

iphone - 从 .Plist 加载数组

ios - 创建一个 iPhone 应用程序以在 iPhone 中拥有多个用户

ios - Swift 3.0 委托(delegate)协议(protocol)不起作用

c# - 如何将委托(delegate)原型(prototype)传递给方法?