UIActionSheet 中途出现

Posted

技术标签:

【中文标题】UIActionSheet 中途出现【英文标题】:UIActionSheet comes up halfway 【发布时间】:2012-07-13 12:41:49 【问题描述】:

我正在寻找一种方法让 UIPickerView 显示“完成”、“取消”按钮。 谷歌搜索我发现了好帖子,所有帖子都涉及 UIActionSheet。

所以我就这么做了

容器是UIView actionSheet 是 UIActinSheet pickerView 是一个UIPickerView

viewDidLoad中:

container = [[[UIView alloc] initWithFrame:CGRectMake(rect.origin.x,rect.origin.y, rect.size.width, rect.size.height)] autorelease];
[self.view addSubview:container];

actionSheet = [[UIActionSheet alloc] initWithTitle:@"myTitle" 
                                          delegate:nil
                                 cancelButtonTitle:nil
                            destructiveButtonTitle:nil
                                 otherButtonTitles:nil];

[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

CGRect pickerFrame = CGRectMake(0, 40, 0, 0);

pickerView = [[[UIPickerView alloc] initWithFrame:pickerFrame]autorelease];
pickerView.showsSelectionIndicator = YES;
pickerView.dataSource = self;
pickerView.delegate = self;

UIToolbar *toolbar = [[[UIToolbar alloc] init] autorelease];
toolbar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
NSMutableArray *items = [[[NSMutableArray alloc] init] autorelease];
[items addObject:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(dismissActionSheet)] autorelease]];
[items addObject:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:@selector(goActionSheet)] autorelease]];
[items addObject:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(goActionSheet)] autorelease]];
[toolbar setItems:items animated:NO];

[actionSheet addSubview:toolbar];
[actionSheet addSubview:pickerView];

[actionSheet showInView:container];

[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];

该应用程序启动良好,整个过程显示得很好:[actionSheet showInView:container];

现在,当我尝试关闭 ActionSheet 时,效果很好!

dismissActionSheet中:

[actionSheet dismissWithClickedButtonIndex:1 animated:NO];

问题是,如何让它再次出现?

当我使用时:

[actionSheet showInView:container];

我只使用按钮从底部选择工具栏,仅此而已。整个 PickerView 都在底部,看不到。

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

操作表旨在更像警报一样使用,因为它们是独立的“立即做出选择”演示者。它们通常只在 iPhone 上部分显示。

您的选择器应该独立于操作表。如果您想要“完成”和“取消”按钮,也许您会考虑将它们添加到选择器的导航栏中?

【讨论】:

我改变了整个方案。使用自定义 UIView 并且实际上必须手动执行我期望 UIActionSheet 为我执行的操作。还不错。基本上是一个 UIButton 在后面,用辅助动画方法改变 UIPickerView 和 UIToolBar 的位置。【参考方案2】:

您可以使用具有完成和取消按钮的 UIToolBar,配合您的 PickerView,这很容易。

【讨论】:

以上是关于UIActionSheet 中途出现的主要内容,如果未能解决你的问题,请参考以下文章

长按 UITextView 中的电话号码后,不会出现来自 UIActionSheet 的取消按钮

UIActionSheet 只显示一次

代码笔记清除图片缓存UIActionSheet

iOS:简单使用UIAlertVIew和UIActionSheet

使用 UIActionSheet 更改视图时工具栏项消失

UIActionSheet 上的 UIDatePicker 不适用于 ipad 4.3