Cercando di capire dove i miei tocchi sono, quando lo spostamento di un cursore di controllo

StackOverflow https://stackoverflow.com/questions/1242946

  •  12-09-2019
  •  | 
  •  

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top