UILabel doesn't show inputView

前端 未结 7 1301
长发绾君心
长发绾君心 2020-12-18 07:14

I would use a UILabel to allow users to select a date with UIDatePicker.

To do this, I created an UILabel subclass overwriting the inputView and the inputAccessoryVi

7条回答
  •  遥遥无期
    2020-12-18 07:34

    Here is the UILabel that shows PickerView, in Swift 4

    final class DatePickerLabel: UILabel {
      private let pickerView: UIPickerView
      private let toolbar: UIToolbar
    
      required init(pickerView: UIPickerView, toolbar: UIToolbar) {
        self.pickerView = pickerView
        self.toolbar = toolbar
        super.init(frame: .zero)
    
        let recogniser = UITapGestureRecognizer(target: self, action: #selector(tapped))
        addGestureRecognizer(recogniser)
      }
    
      required init?(coder aDecoder: NSCoder) {
        fatalError()
      }
    
      override var inputView: UIView? {
        return pickerView
      }
    
      override var inputAccessoryView: UIView? {
        return toolbar
      }
    
      override var canBecomeFirstResponder: Bool {
        return true
      }
    
      @objc private func tapped() {
        becomeFirstResponder()
      }
    }
    

提交回复
热议问题