Tratando de averiguar donde mis toques son, al mover un control deslizante
Pregunta
Me gustaría crear un control deslizante de velocidad variable en el iPhone. Básicamente estoy usando un control UISlider pero me gustaría añadir una segunda dimensión a este control al detectar que el dedo está en la vista actual.
por ejemplo. Un usuario puede deslizar el control hacia la izquierda y la derecha, pero quiero ver dónde está el dedo verticalmente en la vista.
Mi problema es que cuando se está manipulando un control deslizante. La siguiente función no se llama.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
lo que esto significa que no puedo detectar eventos táctiles, ya que supongo que están siendo enviados a la corredera? Cualquier persona trató de hacer esto? O debería UISlider sub clase. Hmmm.
Solución
cabecera
#import <Foundation/Foundation.h>
@interface JBSlider : UISlider {
double verticalTouchDelta;
}
@property(nonatomic, assign) double verticalTouchDelta;
@end
archivo principal
importación "JBSlider.h"
@implementation JBSlider
@synthesize verticalTouchDelta; - (void) sendAction: (SEL) medidas para: (id) forEvent objetivo: evento (UIEvent *) { [SUPER sendAction: medidas para: objetivo forEvent: evento]; // NSLog (@ "HI HI");
UITouch * touch = [[event touchesForView:self] anyObject];
//NSLog(@"%f", [touch locationInView:self].y);
verticalTouchDelta = [touch locationInView:self].y;
}
@end
Simplemente cambiar su deslizador de UISlider a JBSlider en Interface Builder. Funciona increíble.