Готово Панель инструментов на UIPickerView - PullRequest
0 голосов
/ 07 июня 2018

Итак, у меня на странице есть кнопка, при нажатии которой я открываю окно выбора.Я заполнил представление выбора с месяцами.Я добавил панель инструментов, но всякий раз, когда я пытаюсь ее выбрать, просто прокручивает вид средства выбора вверх.

    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)

enter image description here

1 Ответ

0 голосов
/ 07 июня 2018

Кажется, что 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)
...