Der Versuch, um herauszufinden, wo meine berührt sind, wenn ein Schieberegler bewegt

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

  •  12-09-2019
  •  | 
  •  

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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top