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.