iOS 7中文本字段的弹出/模式选择器
Posted
技术标签:
【中文标题】iOS 7中文本字段的弹出/模式选择器【英文标题】:Popup/modal picker for a text field in iOS 7 【发布时间】:2013-12-24 15:36:57 【问题描述】:我在弄清楚如何实现标准弹出选择器时遇到了很多麻烦。当用户选择生日文本字段时,就像许多应用程序的注册屏幕一样,我希望出现一个弹出选择器,以便用户可以选择他们的生日,单击完成,格式化的日期将添加到文本字段中。这似乎不应该那么难,但似乎在 ios 7 中没有简单、清晰、标准的方法。
我在互联网上搜索过,有人说使用模式,有人说操作表,有人说弹出窗口,还有一些人说单独的视图控制器。
谁能告诉我执行此操作的标准方法是什么或如何实现它的 sn-p?
【问题讨论】:
【参考方案1】:我认为“标准”的方式,是将选择器设置为文本字段的 inputView。
UIPickerView *picker = [[UIPickerView alloc] init];
self.textField.inputView = picker;
它会在底部弹出,就像你在文本字段中触摸时键盘一样。
下面是如何使用选择器作为输入视图的简单实现:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *tf;
@property (strong,nonatomic) NSArray *theData;
@end
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
UIPickerView *picker = [[UIPickerView alloc] init];
picker.dataSource = self;
picker.delegate = self;
self.tf.inputView = picker;
self.theData = @[@"one",@"two",@"three",@"four"];
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
return self.theData.count;
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
return 1;
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
return self.theData[row];
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
self.tf.text = self.theData[row];
[self.tf resignFirstResponder];
【讨论】:
这有帮助,但是不考虑它呢?就像在导致日期选择器消失的完成按钮中一样,这不会被认为是这样一个非常标准的东西吗?我希望我不要表现得不友好,你比我发现的任何其他事情都更有帮助,我只是在来自 android 后因缺乏资源而感到沮丧,因为 tuts 每年都不会贬值。 @ChuckKelly,您可以在 didSelectRow 方法中让文本字段辞职第一响应者。我已将其添加到我的答案中。 非常感谢,我接受了你的回答,但最后一件小事。作为这个弹出的视图不是我的故事板的一部分,如果我想要,我将如何添加一个完成按钮(我现在也知道 id add self.tf resignFirstResponder)我问 bc,如果你只是简单地向下滚动选择器,它会选择它所在的位置并关闭,这与选择值不完全相同。 @ChuckKelly,无法自定义选择器视图的外观。您可以在文本字段旁边添加一个完成按钮,然后将代码放在那里(或者在选择一个值之后,您可以在选择器上方的代码中添加一个完成按钮)。顺便说一句,你没有接受我的回答,你投了赞成票。您需要点击大空心箭头来接受答案。 您可以构造一个UIToolbar
,并将其设置为文本字段的inputAccessoryView
。【参考方案2】:
ActionSheetPicker-3.0 library 似乎做得很好。
【讨论】:
我无法从当前的 git 克隆中构建它。 Xcode 7.2.1 给了我:dyld`dyld_fatal_error: -> 0x120055088 : brk #0x3以上是关于iOS 7中文本字段的弹出/模式选择器的主要内容,如果未能解决你的问题,请参考以下文章