![](/img/trans.png)
[英]iPhone keyboard wont show up after adding uitextfield.inputView
[英]UITextField.inputView suddenly not popping up UIPickerView after working for days
我正在开发我的第一个应用程序(颇有学习经验)。 今天,在学习,阅读和尝试/错误之后,我能够以编程方式创建和填充UIPickerView,并在选择适当的UITextField时将其弹出。
我的主ViewController
已经设置了UITableView
并填充了一些JSON数据。 我在UITableView
上方添加了一个子视图(以下称为FilterView
),我想容纳一些控件来过滤我的UITableView
(我不确定该子视图不是问题的一部分)。 在用代码创建UIPickerView
(不使用Storyboard)并填充一些数据,并在子视图中使用适当的.inputView设置UITextField
(触发UIPickerView
出现)后,我便可以按照我想要的方式进行所有工作即将设置过滤我的UITableView的先例。
这是我在情节提要中带有文本字段的视图布局:
您会注意到我有我的主视图(称为View
),一个包含所有控件的子视图(称为FilterView
)以及所有这些下面的UITableView
。 然后,我在viewDidLoad
创建了三个选择器UIPickerViews
,设置了DataSource和Delegate,并将inputView设置为所需的文本字段:
_voltagePickerView = [[UIPickerView alloc] initWithFrame:CGRectZero];
[_voltagePickerView setDataSource: self];
[_voltagePickerView setDelegate: self];
_voltagePickerView.showsSelectionIndicator = YES;
_voltageFilterField.inputView = _voltagePickerView;
//same for other 3
当然,UIPickerView属性和UITextField
的Outlets都在我的ViewController.h
文件中:
@property (strong, nonatomic) UIPickerView *rpmPickerView;
@property (strong, nonatomic) UIPickerView *voltagePickerView;
@property (strong, nonatomic) UIPickerView *noiseLevelPickerView;
@property (strong, nonatomic) IBOutlet UITextField *voltageFilterField;
@property (strong, nonatomic) IBOutlet UITextField *rpmFilterField;
@property (strong, nonatomic) IBOutlet UITextField *noiseLevelFilterField;
还设置了PickerView的所有方法:
// PickerViews //
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
if ([pickerView isEqual: _voltagePickerView]) {
return voltagePickerValues.count;
}
else if () {
//Rest of PickerView rows
}
else {
return 0;
}
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSString *title;
if ([pickerView isEqual: _voltagePickerView]) {
title = [voltagePickerValues objectAtIndex:row];
}
else if {
//Rest of Picker Views
}
else {
title = nil;
}
return title;
}
所有这些都可以正常工作! 我将运行该项目,将填充TableView,然后单击适当的TextField,以显示具有正确数据的适当PickerView。
然后...我唯一能改变的(我能想到的)就是更改我的UITextFields的PlaceHolderText属性...就是这样,我可能还排好了TextField的外观。 然后,我运行了该项目,当我单击TextField时,选择器将不会显示。 我检查了Outlet的TextViews和PickerFields,都一样。 我什至删除了TextViews的参考插座,然后重新创建了它们。 没有。
老实说,我不知道发生了什么事。 除了UITextFields
之一的PlaceHolderText属性外,其他所有操作都与以前完全相同。
我已经清理并重建了项目,重新启动了xcode,甚至重新启动了mac,但是什么也没有。
我想念什么? 抱歉,冗长的帖子,如果您到目前为止做的很感谢。
我用伪标题运行了您的代码,它对我有用。
我添加的一件事是您的代码摘录中缺少的一件事是:
[self.view addSubview:_voltagePickerView];
self是视图控制器。
我没有删除我想回答的内容,希望对其他人有帮助。
我必须在模拟器中更改硬件设置。 我不知道为什么,但是模拟器似乎有问题。
取消选中Hardware => Keyboard => Connect Hardware Keyboard
模拟器中的Hardware => Keyboard => Connect Hardware Keyboard
可解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.