繁体   English   中英

工作几天后,UITextField.inputView突然不弹出UIPickerView

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM