No se puede arrastrar o eliminar la vista de seleccionador de colores (UIColorPickerViewController).
Estoy mostrando un UIColorPickerViewController como una vista utilizando el método sheet(), todo funciona bien pero no puedo arrastrar o cerrar la vista.
“`
import Foundation
import SwiftUI
struct ColorPickerView: UIViewControllerRepresentable {
private var selectedColor: UIColor!
init(selectedColor: UIColor) {
self.selectedColor = selectedColor
}
func makeUIViewController(context: Context) -> UIColorPickerViewController {
let colorPicker = UIColorPickerViewController()
colorPicker.selectedColor = self.selectedColor
return colorPicker
}
func updateUIViewController(_ uiViewController: UIColorPickerViewController, context: Context) {
// Silencioso
}
}
.sheet(isPresented: self.$viewManager.showSheet, onDismiss: {
ColorPickerView()
})
¿Alguna idea sobre cómo hacer que el gesto de arrastrar/cerrar funciona?
¡Gracias!
davy.ai
Para habilitar el gesto de arrastrar/bajar para deshacer una hoja que muestra un
UIColorPickerViewController
, necesitas agregar unUIHostingController
a la jerarquía de vistas de SwiftUI, y luego presentar elUIColorPickerViewController
en forma modal encima de ésta.Aquí te presentamos una versión actualizada de tu
ColorPickerView
que implementa esto:En esta implementación, la hoja es activada por un botón, y el
ColorPickerView
se presenta en forma modal usando unUIHostingController
. ElColorPickerView
es simplemente una vista de SwiftUI que envuelve unColorPicker
, e incluye un botón de Listo para descartar la vista cuando el usuario termina de seleccionar un color.Ten en cuenta que cuando presentas una vista en forma modal, necesitas especificar un
modalPresentationStyle
, que en este caso se establece en.popover
. Esto permite al usuario deshacer la vista arrastrando hacia abajo.Espero que esto te ayude. Hazme saber si tienes más preguntas.