Come impostare il cursore sulla posizione cliccata e ottenere il valore del cursore sulla posizione cliccata su UISlider nella programmazione iPhone. so che possiamo trascinare il cursore in quella posizione ma non voglio farlo. Puoi cortesemente dirmi come impostare il cursore sulla posizione cliccata? È possibile farlo?iPhone: programmazione di UISlider per posizionarsi nella posizione cliccata
risposta
È possibile semplicemente aggiungere un UITapGestureRecognizer al cursore, quindi estrarre l'UIEvent ei Tocchi associati ad esso per capire dove si è verificato il tocco lungo l'UISlider. Quindi imposta il valore del tuo cursore su questo valore calcolato.
UPDATE:
In primo luogo, impostare il dispositivo di scorrimento e aggiungere il sistema di riconoscimento gesto ad esso.
UISlider *slider = [[[UISlider alloc] init] autorelease];
…
<slider setup>
…
UITapGestureRecognizer *gr = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sliderTapped:)] autorelease];
[slider addGestureRecognizer:gr];
quindi implementare il selettore
- (void)sliderTapped:(UIGestureRecognizer *)gestureRecognizer {
<left as a user excercise*>
}
* Suggerimento: Read the docs di capire come ottenere il locationInView estrapolato e capire che cosa il cursore dovrebbe essere
qui è la parte "sinistra come un esercizio utente ":
- (void) tapped: (UITapGestureRecognizer*) g {
UISlider* s = (UISlider*)g.view;
if (s.highlighted)
return; // tap on thumb, let slider deal with it
CGPoint pt = [g locationInView: s];
CGFloat percentage = pt.x/s.bounds.size.width;
CGFloat delta = percentage * (s.maximumValue - s.minimumValue);
CGFloat value = s.minimumValue + delta;
[s setValue:value animated:YES];
}
Il modo in cui l'ho fatto è quello di sottoclassi cursore e check-in touchesBegan
. Se l'utente tocca l'area del pulsante del pollice (che traccia) poi ignorare il rubinetto, ma qualsiasi altra parte sulla trackbar facciamo: :
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchLocation = [touch locationInView:self];
// if we didn't tap on the thumb button then we set the value based on tap location
if (!CGRectContainsPoint(lastKnownThumbRect, touchLocation)) {
self.value = self.minimumValue + (self.maximumValue - self.minimumValue) * (touchLocation.x/self.frame.size.width);
}
[super touchesBegan:touches withEvent:event];
}
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value {
CGRect thumbRect = [super thumbRectForBounds:bounds trackRect:rect value:value];
lastKnownThumbRect = thumbRect;
return thumbRect;
}
soluzione migliore –
se si è utilizzata un'impostazione personalizzata -setThumb, utilizzare 'self.value = self.minimumValue + (self.maximumValue - self.minimumValue) * ((touchLocation.x - self.currentThumbImage.size.width/2)/(self.frame.size.width-self.currentThumbImage.size.width)); 'in -touchesBegan. – SwiftArchitect
stavo usando il codice UISlider sottoclasse di ascoltare gli eventi ValueChanged in ios6> per implementare un tipo di funzione snap-to-grid.
Si è verificato un errore durante l'aggiornamento a iOS7 poiché non ha più attivato UIControlEventsValueChanged. Per chiunque abbia lo stesso problema si è risolto con l'aggiunta di una linea nella if() come di seguito:
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchLocation = [touch locationInView:self];
// if we didn't tap on the thumb button then we set the value based on tap location
if (!CGRectContainsPoint(lastKnownThumbRect, touchLocation)) {
self.value = self.minimumValue + (self.maximumValue - self.minimumValue) * (touchLocation.x/self.frame.size.width);
[self sendActionsForControlEvents:UIControlEventValueChanged];
}
[super touchesBegan:touches withEvent:event];
}
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value {
CGRect thumbRect = [super thumbRectForBounds:bounds trackRect:rect value:value];
lastKnownThumbRect = thumbRect;
return thumbRect;
}
Speranza che aiuta qualcuno :)
ho usato questo codice. Get from: http://imagineric.ericd.net/2012/11/15/uislider-touch-to-set-value/
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sliderTapped:)];
[slider addGestureRecognizer:gr];
- (void)sliderTapped:(UIGestureRecognizer *)g {
UISlider* s = (UISlider*)g.view;
if (s.highlighted)
return; // tap on thumb, let slider deal with it
CGPoint pt = [g locationInView: s];
CGFloat percentage = pt.x/s.bounds.size.width;
CGFloat delta = percentage * (s.maximumValue - s.minimumValue);
CGFloat value = s.minimumValue + delta;
[s setValue:value animated:YES];
}
Spero che questo possa aiutarti.
Sembra appena la sottoclasse di UISlider e il ritorno sempre vero al beginTracking produce l'effetto desiderato.
iOS 10 e Swift 3
class CustomSlider: UISlider {
override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
return true
}
}
- 1. RecyclerView smoothScroll per posizionarsi al centro. android
- 2. iPhone UISlider con due pollici/indicatori?
- 3. iphone zoom nella posizione dell'utente su mapkit
- 4. Come modificare le dimensioni dell'immagine pollice della UISlider di programmazione
- 5. Osservazione del valore di un UISlider - iPhone KVO
- 6. Eventi UISlider
- 7. MediaPlayer.seekTo() non sta cercando di posizionarsi su Android
- 8. iOS - immagine personalizzata per UISlider
- 9. Pulsante posizione iPhone
- 10. Posizione dell'SDK per iPhone sul disco rigido
- 11. iPhone: Problema popup di posizione principale
- 12. UISlider con differenti colori
- 13. Aggiunta di una sottoview come UISlider o UIButtom in Google Maps in iPhone
- 14. iphone ask per l'autorizzazione di posizione corrente di nuovo
- 15. UISlider scomparso in iOS 8.3
- 16. Problema gestuale: UISwipeGestureRecognizer + UISlider
- 17. Come rilevare programmazione iphone 4
- 18. Come ottenere il Lat, Long di una posizione cliccata usando il volantino Api
- 19. Avendo attivato UIControlEventValueChanged quando viene animato UISlider?
- 20. UISlider e UIScrollView
- 21. Animate UISlider uniformemente
- 22. come mettere UISlider verticale?
- 23. Fagioli nella programmazione java
- 24. UILabel Over UISlider Thumb
- 25. C# Modifica della posizione di un oggetto di programmazione
- 26. Memcpy() nella programmazione sicura?
- 27. Programmazione iPhone: Disattiva controllo ortografico in UITextView
- 28. posizione corrente nella Simulator
- 29. iPhone: Apri un url al livello di programmazione
- 30. Apprendimento della programmazione per iPhone proveniente dallo sfondo C#
si può dare un'idea approssimativa di come introdurre UITapGestureRecognizer in slitta? – suse