iOS如何实现下拉列表以及如何关闭它?

iOS如何实现下拉列表以及如何关闭它?,ios,cocoa-touch,uiview,Ios,Cocoa Touch,Uiview,我需要一些关于如何在iOS中实现下拉列表功能的信息 我想到了一些解决方案,比如使用UITableView显示文本项列表。(在我的例子中,列表既可以是静态的,也可以是动态的,因此UITableView对于我的例子来说似乎是一个不错的选择)。但有一件事我还没弄明白,那就是如何排除掉这个下拉列表 假设视图中的某个位置打开了此下拉列表(假设此视图占据整个屏幕)。当我点击视图中的其他地方时,下拉列表一旦打开,就会被关闭,就像桌面环境中典型的下拉列表一样。我该怎么做 一种方法是在视图上收听touchesbe

我需要一些关于如何在iOS中实现下拉列表功能的信息

我想到了一些解决方案,比如使用
UITableView
显示文本项列表。(在我的例子中,列表既可以是静态的,也可以是动态的,因此
UITableView
对于我的例子来说似乎是一个不错的选择)。但有一件事我还没弄明白,那就是如何排除掉这个下拉列表

假设视图中的某个位置打开了此下拉列表(假设此视图占据整个屏幕)。当我点击视图中的其他地方时,下拉列表一旦打开,就会被关闭,就像桌面环境中典型的下拉列表一样。我该怎么做

一种方法是在视图上收听
touchesbeated
事件,查看下拉列表是否打开-这很好,但问题是如果我有按钮之类的东西,当用户单击其中一个按钮时,我不会在视图上收到
touchesbeated
输入


如何以通用方式解决此问题?

下拉列表通常在iOS中使用UIPickerView实现。选择器视图可以设置为文本字段的输入视图,文本字段将保存下拉列表,然后以与键盘相同的方式在屏幕上和屏幕下设置动画

您通常还需要一个UIToolbar,其中包含一个“完成”按钮作为输入附件视图,该视图显示在选择器上方,如果您没有自动执行选择,则允许您在做出选择后立即关闭

通过将
resignFirstResponder
发送到文本字段,可以从picker view委托方法或done按钮的action方法中删除picker

将工具栏创建为附件视图,如下所示:

accessoryView = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
accessoryView.barStyle = UIBarStyleBlackTranslucent;

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

UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneTapped:)];

accessoryView.items = [NSArray arrayWithObjects:space,done, nil];

textField.inputAccessoryView = accessoryView;

这将在右侧为您提供一个“完成”按钮,该按钮连接到一个名为donetaped的操作方法:

尝试一下。这可能会有帮助

1) Add the UITableView on a transparent UIView. 
2) The UIView should have the same size as the display screen.
3) The UITableView shall take the same small size you have.
4) Implement the touches method as you mentioned for the holding UIView.

首先,如果你在iPad上,UIPopoverViewController正是为此而设计的。如果你需要更多的定制,我总是有一个不可见的全屏大小的按钮隐藏在下拉菜单下。它覆盖了整个屏幕,当触摸或下拉菜单关闭时,它会隐藏自己。超级简单。

我发现这个项目在github上很有用。
我为iOS创建了一个下拉控件。您可以从下面的URL查看它


我会查看UIPopOverViewController,它完全满足您的需要,我不确定,但它可能只适用于iPad。在这种情况下,应该使用UIPickerViewController。下拉菜单在iPhone上没有位置。这是一台iPhone而不是台式电脑。使用这个Hi-jrturton,谢谢你的回答。对于实现下拉列表功能非常有用。我创建了选择器视图,并将其指定为textfiedl的inputview。工作正常,但我不能解雇pickeview。您提到我需要使用UIToolbar来按住“完成”按钮,但我不知道如何操作。你能举个简单的例子吗。