UIPickerView在iOS 11上更改?

在我们的应用程序,我们有一个UIPickerView,让你select一个赛季。 但是,在iOS 11上,“ 完成”button和“ 取消”button消失,仅在应用程序之间切换时才可见。 有没有人经历过这个?

iOS 11行为截图,下面有iOS 10行为。

编辑:这是一个完整的示例应用程序的问题:

以下是设置选取器视图的代码

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与完成按钮 在视图之间切换时,UIPickerView的完成按钮会重新出现 UIPickerView在iOS 10上按预期工作

原来这里有一个简单的修复:

 self.seasonPicker.translatesAutoresizingMaskIntoConstraints = false 

在内部,看起来他们已经改变了input附件视图的行为,默认情况下具有该属性。

我已经使用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