带有 UIPickerView 和完成、下一个、上一个按钮的 UIActionSheet

Posted

技术标签:

【中文标题】带有 UIPickerView 和完成、下一个、上一个按钮的 UIActionSheet【英文标题】:UIActionSheet with UIPickerView and Done, Next, Previous buttons 【发布时间】:2011-07-19 19:41:38 【问题描述】:

我正在尝试实现一个包含选择器视图和分段控制栏的操作表,其中包含上一个按钮、下一个按钮和完成按钮,如下图http://imgur.com/8wVMy。我目前能够使它看起来像这样http://imgur.com/AXn6H。我想知道是否有人可以帮助我将选择器视图放在底部并让它看起来更好一点。感谢您的帮助。

【问题讨论】:

【参考方案1】:

除非您的目标是非常旧的 ios 版本(即早于 3.2 的版本),否则最好的方法是采用完全不同的方法。

从 3.2 开始,任何 UIResponder(包括所有 UIView)都可以从其inputView 属性返回一个 UIView,以在视图成为第一响应者时显示该视图而不是键盘。这甚至适用于通常不会成为第一响应者或根本不显示键盘的视图。很简单:

    设计您的弹出视图,就像设计任何其他视图一样。 确保您的小部件视图从 canBecomeFirstResponder 返回 YES。 确保您的小部件视图返回来自inputView 的弹出视图实例。

更多详情请访问the documentation。

另外,顺便说一句,如果您使用的是 iPad,您可能应该使用 UIPopoverController 来显示 UIPickerView 而不是这些方法中的任何一种。 Apple may actually require this 如果您打算在应用商店中获取您的应用。

【讨论】:

感谢您的提醒。我知道我这样做的方式一定有什么奇怪的地方,但是有没有关于如何做到这一点的教程,或者你能提供任何示例代码吗?【参考方案2】:

下一个和上一个按钮实际上是将您的图像显示给 segmentedController 工具栏中的。要得到它你必须定义segmentedController和UIToolbar。 H. 接下来添加 DataSource 和 UIPickerView 然后在 viewDidLoad 创建对象并定义它们的属性。例如:

 if (keyboardToolbar == nil) 
        keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
        [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent];


        segControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Anterior", @"Siguiente", nil]];
        [segControl setSegmentedControlStyle:UISegmentedControlStyleBar];
        [segControl setTintColor:[UIColor blackColor]];
        segControl.frame = CGRectMake(5, 7, 150, 33);
        segControl.momentary = YES;
        [segControl addTarget:self action:@selector(segSelected:) forControlEvents:UIControlEventValueChanged];

        UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

        UIBarButtonItem *aceptar = [[UIBarButtonItem alloc] initWithTitle:@"Hecho" style:UIBarButtonItemStyleDone target:self action:@selector(cerrarTeclado:)];

        //aceptar.width = 70.0f;

        [keyboardToolbar setItems:[[NSArray alloc] initWithObjects: extraSpace, aceptar, nil]];
        [keyboardToolbar addSubview:segControl];
    

【讨论】:

以上是关于带有 UIPickerView 和完成、下一个、上一个按钮的 UIActionSheet的主要内容,如果未能解决你的问题,请参考以下文章

带有完成按钮的 UIPickerView 不起作用

如何将带有完成按钮的工具栏添加到 UIPickerView?

iphone中隐藏uipickerview的问题

仅在单击完成按钮时将 UIPickerView 选择添加到 TextField

带有多行 UILabel 的 UIPickerView

在 Ipad 中带有完成按钮的 UIPickerView