簡體   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