Cercando di capire dove i miei tocchi sono, quando lo spostamento di un cursore di controllo
Domanda
Vorrei creare un controllo variabile della velocità di scorrimento su iPhone. Fondamentalmente sto usando un controllo UISlider ma vorrei aggiungere una seconda dimensione a questo controllo rilevando in cui il dito è nella vista corrente.
es. Un utente può far scorrere il controllo a destra ea sinistra, ma voglio vedere dove il dito verticalmente nella vista.
Il mio problema è che quando si sta manipolando un dispositivo di scorrimento. La seguente funzione non viene chiamata.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
quindi questo significa che non posso rilevare eventuali eventi touch perché suppongo che vengono inviati al dispositivo di scorrimento? Chiunque ha provato a fare questo? O dovrei sub classe UISlider. Hmmm.
Soluzione
intestazione
#import <Foundation/Foundation.h>
@interface JBSlider : UISlider {
double verticalTouchDelta;
}
@property(nonatomic, assign) double verticalTouchDelta;
@end
file principale
Importa "JBSlider.h"
@implementation JBSlider
@synthesize verticalTouchDelta; - (void) sendAction: (SEL) azioni intese a: (id) bersaglio forEvent: (UIEvent *) evento { [Super sendAction: azione: forEvent bersaglio: evento]; // NSLog (@ "HI HI");
UITouch * touch = [[event touchesForView:self] anyObject];
//NSLog(@"%f", [touch locationInView:self].y);
verticalTouchDelta = [touch locationInView:self].y;
}
@end
È sufficiente cambiare il vostro cursore da UISlider a JBSlider in Interface Builder. Funziona impressionante.