2009-08-07 10 views
0

Ich möchte eine variable Geschwindigkeit Schieberegler auf dem iPhone erstellen. Grundsätzlich verwende ich ein UISlider-Steuerelement, aber ich möchte dieses Steuerelement eine zweite Dimension hinzufügen, indem Sie erkennen, wo sich der Finger in der aktuellen Ansicht befindet.Versuchen Sie herauszufinden, wo meine Berührungen sind, wenn Sie einen Schieberegler bewegen

E.G. Ein Benutzer kann das Steuerelement nach links und rechts verschieben, aber ich möchte sehen, wo sich der Finger vertikal in der Ansicht befindet.

Mein Problem ist, dass wenn Sie einen Schieberegler manipulieren. Die folgende Funktion wird nicht aufgerufen.

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

also bedeutet dies, dass ich keine Berührungsereignisse erkennen kann, weil ich davon ausgehe, dass sie an den Schieberegler gesendet werden? Wer hat das versucht? Oder sollte ich Unterklasse UISlider. Hmmm.

+0

Hmmm Blick auf UISlider.h sieht es nicht wirklich aus wie irgendwelche Ereignisse an diese Klasse gesendet werden, die ich fangen kann? –

+0

Hier ist eine vollständige Anleitung, was Sie brauchen http://oleb.net/blog/2011/01/obslider-a-uislider-subclass-with-variable-scrubbing-speed/ – blackmoon

Antwort

0

Kopf

#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 zu: (id) target forEvent: (UIEvent *) Ereignis { [Super sendAction: action to: Ziel forEvent: event]; // NSLog (@ "HI HI");

UITouch * touch = [[event touchesForView:self] anyObject]; 
//NSLog(@"%f", [touch locationInView:self].y); 
verticalTouchDelta = [touch locationInView:self].y;  

}

@end

einfach Ihren Schieber von UISlider zu JBSlider im Interface Builder ändern. Funktioniert super.

Verwandte Themen