我需要一些关于如何在 iOS 中实现下拉列表类型功能的输入。
我想到了一些解决方案,例如使用UITableView
用于显示文本项列表。 (在我的例子中,列表可以是静态的也可以是动态的,所以UITableView
对于我的情况来说似乎是一个不错的选择)。但我无法弄清楚的一件事是如何关闭下拉菜单......
假设在视图中的某处打开了这个下拉列表(假设该视图占据了整个屏幕)。当我点击视图中的其他位置时,下拉菜单一旦打开,应该会被关闭(关闭),就像典型的下拉菜单在桌面环境中的工作方式一样。我怎么做?
一种方法是听touchesBegan
视图上的事件并查看下拉列表是否打开 - 这很好,但问题是如果我有按钮之类的东西,并且当用户单击其中之一时,我不会收到touchesBegan
在视图上输入。
我该如何以通用的方式解决这个问题?
在 iOS 中,下拉列表通常使用 UIPickerView 来实现。选择器视图可以设置为文本字段的输入视图,该视图将按住下拉菜单,然后以与键盘相同的方式在屏幕上和屏幕外进行动画处理。
您通常还需要一个 UIToolbar,其中包含一个“完成”按钮作为输入附件视图,它出现在选择器上方,并且允许您在做出选择后关闭(如果您没有自动执行此操作)。
您可以通过发送来删除选择器resignFirstResponder
到文本字段,无论是从选择器视图委托方法还是完成按钮的操作方法。
您可以将工具栏创建为附件视图,如下所示:
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;
这将在右侧为您提供一个“完成”按钮,该按钮连接到名为 didTapped 的操作方法:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)