Mi problema era un superconjunto de este tema - Tengo UISliders dentro UITableViewCells y todo el UITableView es una página dentro de un UIScrollView. Los controles deslizantes estaban causando estragos en las interacciones con los otros dos y las soluciones de subclases no funcionaron. Esto es lo que se me ocurrió que funciona estupendamente: envíe notificaciones cuando los controles deslizantes se muevan y tenga UITableView y UIScrollView disableScrolling activados durante este tiempo. Nota en la imagen siguiente: mis controles deslizantes son horizontales, mi vista de tabla es vertical y mi UIScrollView tiene páginas horizontales.

El UITableViewCell recoge acontecimientos para el cursor creado mediante programación-:
self.numberSlider = [[UISlider alloc] init];
[self.numberSlider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[self.numberSlider addTarget:self action:@selector(sliderTouchDown:) forControlEvents:UIControlEventTouchDown];
[self.numberSlider addTarget:self action:@selector(sliderTouchUp:) forControlEvents:UIControlEventTouchUpInside];
[self.numberSlider addTarget:self action:@selector(sliderTouchUp:) forControlEvents:UIControlEventTouchUpOutside];
A los efectos de este tutorial, que sólo se preocupan por toma de contacto y Up:
- (void)sliderTouchDown:(UISlider *)sender
{
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFY_SLIDER_TOUCH_BEGAN object:nil];
}
- (void)sliderTouchUp:(UISlider *)sender
{
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFY_SLIDER_TOUCH_ENDED object:nil];
}
Ahora, detectamos estas notificaciones en UITableView (tenga en cuenta que la tabla de vista está en un VC, pero estoy seguro de que esto funcionaría si subclá culo al aire):
- (void)viewDidLoad
{
// other stuff
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sliderTouchDown:) name:NOTIFY_SLIDER_TOUCH_BEGAN object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sliderTouchUp:) name:NOTIFY_SLIDER_TOUCH_ENDED object:nil];
}
- (void)sliderTouchDown:(NSNotification *)notify
{
self.treatmentTableView.scrollEnabled = NO;
}
- (void)sliderTouchUp:(NSNotification *)notify
{
self.treatmentTableView.scrollEnabled = YES;
}
y la UIScrollView (igual que arriba, rodeado por un VC):
- (void)viewDidLoad
{
// other stuff
// Register for slider notifications
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(disableScrolling:) name:NOTIFY_SLIDER_TOUCH_BEGAN object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enableScrolling:) name:NOTIFY_SLIDER_TOUCH_ENDED object:nil];
}
- (void)disableScrolling:(NSNotification *)notify
{
self.scrollView.scrollEnabled = NO;
}
- (void)enableScrolling:(NSNotification *)notify
{
self.scrollView.scrollEnabled = YES;
}
Me encantaría oír una solución más elegante, pero este sin duda se hace el trabajo . Cuando utiliza un control deslizante, la tabla y las vistas de desplazamiento se mantienen estables y cuando hace clic fuera de los controles deslizantes, la vista de tabla y desplazamiento se mueven como se esperaba. Además, tenga en cuenta que podría usar instancias no subclasificadas de los 3 componentes en esta solución. ¡Espero que esto ayude a alguien!
Gracias, terminé yendo con eso. Sin embargo, otra rareza ... este comportamiento solo pareció manifestarse en el simulador. Una vez que lo obtuve en el dispositivo funcionó bien sin la solución. – MarkPowell
Interesante, otra razón para no confiar únicamente en el simulador para probar ... – BoltClock
FWIW, estoy viendo exactamente el mismo comportamiento (como se describe en la pregunta original) tanto en el simulador (iOS 6) como en el dispositivo (iOS 5.1). Tengo que mantener pulsado un momento antes de arrastrar el control deslizante, o si no, obtengo la vista de desplazamiento arrastrar en su lugar. –