Essayer de savoir où sont mes touches, lorsque vous déplacez un curseur de contrôle
Question
Je voudrais créer un contrôle de curseur à vitesse variable sur l'iPhone. En fait, je me sers d'un contrôle UISlider mais je voudrais ajouter une deuxième dimension à ce contrôle en détectant où le doigt est dans la vue actuelle.
par exemple. Un utilisateur peut glisser le contrôle gauche et à droite, mais je veux voir où leur doigt verticalement dans la vue.
Mon problème est que lorsque vous manipulez un contrôle de curseur. La fonction suivante est pas appelée.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
donc cela signifie que je ne peux pas détecter les événements tactiles parce que je suppose qu'ils sont envoyés au curseur? Tout le monde a essayé de le faire? Ou devrais-je sous classe UISlider. Hmmm.
La solution
En-tête
#import <Foundation/Foundation.h>
@interface JBSlider : UISlider {
double verticalTouchDelta;
}
@property(nonatomic, assign) double verticalTouchDelta;
@end
fichier principal
import "JBSlider.h"
@implementation JBSlider
@synthesize verticalTouchDelta; - (void) sendAction: (SEL) à l'action: (id) cible forEvent: (UIEvent *) événement { [Super sendAction: action: forEvent cible: événement]; // NSLog (@ "HI HI");
UITouch * touch = [[event touchesForView:self] anyObject];
//NSLog(@"%f", [touch locationInView:self].y);
verticalTouchDelta = [touch locationInView:self].y;
}
@end
Il suffit de changer votre curseur de UISlider à JBSlider dans Interface Builder. Fonctionne impressionnant.