es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Determina si un selector de fechas en línea solo para fechas, se encuentra actualmente en un modo de vista de calendario o en un modo de vista abreviada de mes/año rotativo.

Actualmente, tengo un estilo en línea DatePicker con el modo solo de Date.

Modo de vista de calendario

La DatePicker está observando el evento de cambio de valor y ejecutará datePickerValueChanged si ocurre el evento de cambio de valor.

Para la captura de pantalla anterior, si intento tocar la fecha 16, se ejecutará la siguiente función de devolución de llamada.

Sin embargo, si toco en la esquina superior izquierda local “Febrero 2021” (no causará datePickerValueChanged), se convertirá en lo siguiente.

Modo de vista giratoria de mes / año

Si giro la vista giratoria, ¡también se ejecutará datePickerValueChanged!

Me gustaría realizar alguna acción solo si el usuario toca una fecha durante el modo de vista de calendario.

Dado que ambas vistas activarán el evento de cambio de valor y comprobar datePicker.datePickerMode y datePicker.datePickerStyle no ayuda mucho.

¿Tienes alguna idea de cómo puedo determinar si un DatePicker en línea solo de fecha está actualmente en modo de vista de calendario o en modo de vista giratoria de mes / año?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para determinar el modo de vista del Selector de fecha

    Una forma de determinar si un Selector de fecha en línea solo para fechas se encuentra actualmente en el modo de vista de calendario o en el modo de vista de giro de mes/año abreviado es mediante el uso de la propiedad subviews del UIDatePicker.

    En el modo de vista de calendario, el UIDatePicker tiene una subvista de tipo UIPickerView, mientras que en el modo de vista de giro, tiene subvistas de tipo UIPickerView y UIButton.

    Por lo tanto, podemos verificar la existencia de subvistas UIButton para saber si el Selector de fecha se encuentra actualmente en el modo de vista de giro o no.

    Aquí tienes un ejemplo de fragmento de código que puedes usar:

    func isDatePickerInRotaryViewMode(datePicker: UIDatePicker) -> Bool {
        for subview in datePicker.subviews {
            if subview is UIButton {
                return true
            }
        }
        return false
    }
    

    Puedes llamar a esta función dentro de la función datePickerValueChanged y ejecutar la acción deseada en función del valor de retorno.

Comments are closed.