objective-c ios uidatepicker key-value-observing

objective c - Observando el cambio en UIDatePicker



objective-c ios (3)

Noté que no hay un delegado para observar los cambios en UIDatePicker. ¿Hay alguna manera de detectar cuándo se realiza un cambio en el selector sin confirmar nada, como el momento en que gira y aterriza en un nuevo número que quiero poder detectar? Pensé en la observación del valor clave, pero no creo que haya una propiedad que cambie en el acto


Aquí hay una propuesta para un selector de fecha compatible con KVO:

@interface LNKVODatePicker : UIDatePicker @end @implementation LNKVODatePicker - (void)willMoveToWindow:(UIWindow *)newWindow { [super willMoveToWindow:newWindow]; [self removeTarget:self action:@selector(_didChangeDate) forControlEvents:UIControlEventValueChanged]; if(newWindow != nil) { [self addTarget:self action:@selector(_didChangeDate) forControlEvents:UIControlEventValueChanged]; } } - (void)dealloc { [self removeTarget:self action:@selector(_didChangeDate) forControlEvents:UIControlEventValueChanged]; } - (void)_didChangeDate { [self willChangeValueForKey:@"date"]; [self didChangeValueForKey:@"date"]; } @end


Debe agregar a su UIDatePicker el evento UIControlEventValueChanged para manejar los cambios de fecha:

[myDatePicker addTarget:self action:@selector(dateIsChanged:) forControlEvents:UIControlEventValueChanged];

Luego la implementación:

- (void)dateIsChanged:(id)sender{ NSLog(@"Date changed"); }


Vaya a IB y arrastre desde UIDatePicker a su archivo .h. Luego seleccione

Maneja esto como quieras en tu archivo .m; XCode agregará el método a continuación para usted.