【问题标题】:Done Toolbar on UIPickerViewUIPickerView 上的完成工具栏
【发布时间】:2018-06-07 17:49:07
【问题描述】:

所以我在点击时在页面上有一个按钮,我正在打开一个选择器视图。我已经用月份填充了选择器视图。我添加了一个工具栏,但每当我尝试选择它时,只会将选择器视图滚动到顶部。

    monthPicker = UIPickerView(frame: CGRect(x: 0, y: self.view.frame.size.height- monthPicker.frame.size.height, width: self.view.frame.size.width, height: monthPicker.frame.size.height))
    monthPicker.delegate = self
    monthPicker.dataSource = self
    monthpickerData = ["January","February","March","April","May","June","July","August","September","October","November","December"]
    monthPicker.backgroundColor = UIColor.white
    //
    let btnDone = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.monthdoneButtonAction))
    let barAccessory = UIToolbar(frame: CGRect(x: 0, y: 0, width: monthPicker.frame.size.width, height: 44))
    barAccessory.barStyle = .default
    barAccessory.isTranslucent = false
    barAccessory.items = [flexiblespace,btnDone]
    monthPicker.addSubview(barAccessory)

【问题讨论】:

  • 您的代码令人困惑!您如何根据月份选择器的大小创建月份选择器?您没有将 monthPicker 或 btnDone 添加到视图的子视图中。您正在向酒吧配件添加另一个名为 btnDone2 的按钮,但我看不到您在哪里创建 btnDone2...
  • 不小心添加了那个 2. 修复了那个。按钮选择是我将 monthPicker 添加到视图的位置。没有包括它,因为它似乎不会影响工具栏不工作。

标签: swift uipickerview uitoolbar


【解决方案1】:

似乎 UIPickerView 不允许其子级接收触摸事件。如果您将它与 UITextField 一起显示,您可以使用它的 inputView 和 inputAccessoryView 来实现相同的效果。或者,您可以创建一个顶级容器 UIView 来保存工具栏和选择器视图,如下所示:

    let picker = UIView(frame: CGRect(x: 0, y: view.frame.height - 260, width: view.frame.width, height: 260))

    // Toolbar
    let btnDone = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(self.monthdoneButtonAction))
    let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(self.cancelClick))

    let barAccessory = UIToolbar(frame: CGRect(x: 0, y: 0, width: picker.frame.width, height: 44))
    barAccessory.barStyle = .default
    barAccessory.isTranslucent = false
    barAccessory.items = [cancelButton, spaceButton, btnDone]
    picker.addSubview(barAccessory)

    // Month UIPIckerView
    monthPicker = UIPickerView(frame: CGRect(x: 0, y: barAccessory.frame.height, width: view.frame.width, height: picker.frame.height-barAccessory.frame.height))
    monthPicker.delegate = self
    monthPicker.dataSource = self
    monthpickerData = ["January","February","March","April","May","June","July","August","September","October","November","December"]
    monthPicker.backgroundColor = UIColor.white
    picker.addSubview(monthPicker)

【讨论】:

  • 这很好用。我唯一改变的是我将monthPicker高度设置为216。否则它不在屏幕底部。
  • 它也帮助了我。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
相关资源
最近更新 更多