Essayer de savoir où sont mes touches, lorsque vous déplacez un curseur de contrôle

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

  •  12-09-2019
  •  | 
  •  

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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top