2017-06-09 39 views
4

在我們的應用程序中,我們有一個UIPickerView,可以讓您選擇一個季節。但是,在iOS 11上,完成按鈕和取消按鈕消失並且僅在應用程序之間切換時可見。有沒有其他人經歷過這個?UIPickerView在iOS 11上更改?

iOS 11行爲的屏幕截圖,下面有iOS 10行爲。

編輯:下面是該問題一個complete sample app

下面是設置選擇器視圖

func setUpPickerView(){ 

    self.seasonPicker = UIPickerView.init(frame: CGRect.init(x: 0, y: 50, width: self.frame.width, height: UIScreen.main.bounds.height/3)) 
    self.seasonPicker.delegate = self 
    self.seasonPicker.dataSource = self 

    self.seasonTextField.inputView = self.seasonPicker 

    let toolbar = UIToolbar.init(frame: CGRect.init(x: 0, y: 0, width: self.frame.width, height: 50)) 
    toolbar.barStyle = UIBarStyle.default 

    let labelTitle = UILabel.init(frame: CGRect.init(x: 0, y: 50, width: 150, height: 20)) 
    labelTitle.backgroundColor = UIColor.clear 
    labelTitle.textColor = UIColor.black 
    labelTitle.textAlignment = NSTextAlignment.left 
    labelTitle.text = "Select a Season" 
    labelTitle.sizeToFit() 

    let typeFeild = UIBarButtonItem.init(customView: labelTitle) 
    let cancelButton = UIBarButtonItem.init(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(didClickPickerCancel)) 
    let flexSpace = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil) 
    let doneButton = UIBarButtonItem.init(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(didClickPickerDone)) 
    toolbar.items = [cancelButton, flexSpace, typeFeild, flexSpace, doneButton] 

    toolbar.sizeToFit() 

    self.seasonTextField.inputAccessoryView = toolbar 

} 

UIPickerView with missing done button UIPickerView's done button reappears while switching between views UIPickerView working as expected on iOS 10

+0

那些按鈕都沒有選擇器視圖的一部分,最好的辦法我懷疑這與他們有什麼關係。更有可能的是,它與你展示或展示你所展示的容器的方式有關。你應該發佈創建該視圖/控制器的代碼。 – Dima

回答

8

原來的代碼有一個簡單的解決這個:

self.seasonPicker.translatesAutoresizingMaskIntoConstraints = false 

在內部,看起來他們已經改變了輸入附件視圖的行爲,默認情況下具有該屬性。

+1

謝謝。它像魔術一樣工作 –

0

我一直在使用initWithFrame分配的,因此我變了樣

UIPickerView picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 43, 320, 480)]; 

UIPickerView picker = [UIPickerView new]; 

,也爲UIToolbar

UIToolbar toolbar = [UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 56)];

UIToolbar toolbar = [UIToolbar new]; 

,現在做的是可見......問題是舊的iOS 10補丁大小爲使...現在新的是使用的iOS 11