Der Versuch, um herauszufinden, wo meine berührt sind, wenn ein Schieberegler bewegt
Frage
Ich möchte eine variable Geschwindigkeit Schieberegler auf dem iPhone erstellen. Grundsätzlich verwende ich eine UISlider Kontrolle, aber ich möchte eine zweite Dimension dieser Steuerung hinzuzufügen, durch Erfassen, wo der Finger ist in der aktuellen Ansicht.
z. Ein Benutzer kann die Steuerung nach links und rechts schieben, aber ich möchte, um zu sehen, wo ihre Finger vertikal in der Ansicht.
Mein Problem ist, dass, wenn Sie einen Schieberegler manipulieren. Die folgende Funktion wird nicht aufgerufen.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
so bedeutet dies, ich keine Berührungsereignisse erfassen kann, weil ich annehmen, dass sie an dem Schieber gesendet werden? Jeder versucht, dies zu tun? Oder sollte ich Unterklasse UISlider. Hmmm.
Lösung
Header
#import <Foundation/Foundation.h>
@interface JBSlider : UISlider {
double verticalTouchDelta;
}
@property(nonatomic, assign) double verticalTouchDelta;
@end
Hauptdatei
Import "JBSlider.h"
@implementation JBSlider
@synthesize verticalTouchDelta; - (void) sendAction: (SEL) Aktion: (id) Ziel forEvent: (UIEvent *) Ereignis { [Super sendAction: Aktion: Ziel forEvent: event]; // NSLog (@ "HALLO HALLO");
UITouch * touch = [[event touchesForView:self] anyObject];
//NSLog(@"%f", [touch locationInView:self].y);
verticalTouchDelta = [touch locationInView:self].y;
}
@end
Sie einfach Ihren Schieber von UISlider zu JBSlider im Interface Builder ändern. Funktioniert super.