如何在UIPickerView中显示UIBarButtonItem文本?

问题描述 投票:1回答:1

是否有人遇到UIToolbar中的UIBarButtonItem文本(在UIDatePicker中调用)在您单击此UIBarButtonItem之前不可见的问题?什么可能导致这个问题?

Here you can not see the buttons

But when you click on the screen where it is supposed to be you can see that it appears

我尝试了一切,但问题仍然是每个UIPickerView(包括UIDatePicker)相关

这是我的实现:

@objc func createDatePicker() {
        datePicker.datePickerMode = .date

        //ToolBar
        let toolbar = UIToolbar();
        toolbar.sizeToFit()
        let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(doneDatePicker));
        let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
        let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelDatePicker));
        // I've tried to change color of the label, but it didn't help
        //toolbar.tintColor = UIColor.black
        toolbar.setItems([cancelButton,spaceButton,doneButton], animated: false)


        dateTextfield.inputAccessoryView = toolbar
        dateTextfield.inputView = datePicker
    }

使用此代码时,这些按钮不可见,但是当您单击应该使用这些按钮的位置时,将显示单击按钮的文本。但是有没有什么方法可以随时看到它?这种行为可能是什么原因?

我是ios的新人。所以我非常感谢你的帮助!提前致谢。

ios swift datepicker uipickerview uidatepicker
1个回答
0
投票

试试这个代码。这里我在textfield开始编辑中添加DatePicker。

func openDatePickerForTextField(_ sender: UITextField) {
    //move view if
    moveViewYPositionForDatePicker()
    let datePickerView = UIDatePicker()
    datePickerView.datePickerMode = .date
    sender.inputView = datePickerView
    datePickerView.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged)
    addKeyboardToolBar(onTextfield: sender, onPicker: datePickerView)
}

//MARK:- Add done button on Picker View
func addKeyboardToolBar(onTextfield textField : UITextField, onPicker pickerView : UIDatePicker) {
    let keyboardToolBar = UIToolbar(frame: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(pickerView.frame.size.width), height: CGFloat(25)))
    keyboardToolBar.sizeToFit()
    keyboardToolBar.barStyle = .black
    textField.inputAccessoryView = keyboardToolBar
    let nextButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(doneButtonPressed))
    keyboardToolBar.items = [UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil), nextButton]
}
© www.soinside.com 2019 - 2024. All rights reserved.