Desidero che UIScrollView scorra rapidamente dopo lo sweep veloce, like this. Sebbene, quando il cercapersone è attivato, lo scorrimento funzioni one page at a time. È possibile scorrere velocemente, quando l'impaginazione è abilitata con un semplice tocco di un dito senza implementazione manuale utilizzando i riconoscitori di gesti?Sensibilità/Velocità di scorrimento di UIScrollView con cercapersone
risposta
Questo è abbastanza semplice, tuttavia è necessario implementare l'aspetto di impaginazione (che è abbastanza semplice). Non hai bisogno di riconoscitori di gesti.
Swift
In primo luogo, regolare la UIScrollView tasso di decelerazione:
scrollView.decelerationRate = UIScrollViewDecelerationRateFast
Supponiamo di avere una vasta gamma di contenuti - chiamiamolo yourPagesArray
. Nella tua UIScrollViewDelegate, implementare il seguente metodo:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)
{
//This is the index of the "page" that we will be landing at
let nearestIndex = Int(CGFloat(targetContentOffset.pointee.x)/scrollView.bounds.size.width + 0.5)
//Just to make sure we don't scroll past your content
let clampedIndex = max(min(nearestIndex, yourPagesArray.count - 1), 0)
//This is the actual x position in the scroll view
var xOffset = CGFloat(clampedIndex) * scrollView.bounds.size.width
//I've found that scroll views will "stick" unless this is done
xOffset = xOffset == 0.0 ? 1.0 : xOffset
//Tell the scroll view to land on our page
targetContentOffset.pointee.x = xOffset
}
Sarà inoltre necessario per implementare il seguente metodo delegato, per gestire il caso in cui l'utente solleva il dito delicatamente senza causare alcun rallentamento di scorrimento:
(Aggiornamento:.. non potrebbe essere necessario farlo sotto l'ultimo SDK iOS sembra che il metodo delegato di cui sopra è ora chiamato quando non c'è velocità zero)
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)
{
if !decelerate
{
let currentIndex = floor(scrollView.contentOffset.x/scrollView.bounds.size.width)
let offset = CGPoint(x: scrollView.bounds.size.width * currentIndex, y: 0)
scrollView.setContentOffset(offset, animated: true)
}
}
Objective-C
Impostazione della velocità di decelerazione:
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
Allora il vostro rotolo implementazione vista delegato:
- (void) scrollViewWillEndDragging:(UIScrollView *)scroll withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
//This is the index of the "page" that we will be landing at
NSUInteger nearestIndex = (NSUInteger)(targetContentOffset->x/scrollView.bounds.size.width + 0.5f);
//Just to make sure we don't scroll past your content
nearestIndex = MAX(MIN(nearestIndex, yourPagesArray.count - 1), 0);
//This is the actual x position in the scroll view
CGFloat xOffset = nearestIndex * scrollView.bounds.size.width;
//I've found that scroll views will "stick" unless this is done
xOffset = xOffset==0?1:xOffset;
//Tell the scroll view to land on our page
*targetContentOffset = CGPointMake(xOffset, targetContentOffset->y);
}
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if(!decelerate)
{
NSUInteger currentIndex = (NSUInteger)(scrollView.contentOffset.x/scrollView.bounds.size.width);
[scrollView setContentOffset:CGPointMake(scrollView.bounds.size.width * currentIndex, 0) animated:YES];
}
}
Penso che possiamo impostare scrollView.userInteractionEnabled = NO quando il nostro dito toccarlo. E poi quando l'animazione è ferma, aprila. Funziona per me. Spero che ti possa aiutare.
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
scrollView.userInteractionEnabled = NO;
}
// at the end of scroll animation, reset the boolean used when scrolls originate from the UIPageControl
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
scrollView.userInteractionEnabled = YES;
}
- 1. Aggiungi UIScrollView con cercapersone a UIViewController esistente
- 2. JQuery Tab di scorrimento/cercapersone
- 3. Animare lo scorrimento di UIScrollView con CoreAnimation
- 4. Scorrimento orizzontale infinito UIScrollView
- 5. UIScrollView all'interno di UIScrollView?
- 6. Scorrimento infinito - setContentOffset: arresta decelerazione di UIScrollView
- 7. Controllare la direzione di scorrimento in UIScrollView
- 8. Ridimensionare UIView all'interno di UIScrollView con AutoLayout per lo scorrimento?
- 9. Scorrimento di un UIScrollView orizzontale con incrementi graduali?
- 10. Scorrimento orizzontale UIScrollView con gesto di panoramica verticale
- 11. Scorrimento parallasse orizzontale UIScrollView iOS
- 12. UIScrollView: lo scorrimento non funziona
- 13. UIScrollView disabilita lo scorrimento ruotando su iPhone/iPad
- 14. Rilevamento dei gesti di scorrimento su UITableViewCell all'interno di UIScrollView
- 15. UITableView problemi di scorrimento quando all'interno di un UIScrollView
- 16. Estensione di UIScrollView e monitoraggio degli eventi di scorrimento
- 17. Come posso impostare la posizione di scorrimento di un UIScrollView?
- 18. Ottieni gli attuali valori di scorrimento di UIScrollView su iPhone?
- 19. Visualizzazione di scorrimento del cercapersone con i controller di visualizzazione figlio
- 20. Scorrimento continuo tra UIPanGestureRecognizer e riattivato UIScrollView
- 21. iOS: Autolayout che causa la mancata scorrimento di UIScrollView
- 22. iOS: UIScrollView che rileva il gesto di scorrimento
- 23. UIScrollView determinare la direzione di scorrimento sul scrollViewDidEndDragging quando paging
- 24. Mostra gli indicatori mentre si scorre a scorrimento di UIScrollView
- 25. UIScrollView snap-to-position durante lo scorrimento
- 26. memoria cercapersone con D
- 27. Disabilita lo scorrimento orizzontale in UIScrollView con l'autolayout
- 28. Come posso riprodurre il comportamento di scorrimento a scorrimento di iPhone UIScrollView nella mia visualizzazione personalizzata?
- 29. Scheda scorrevole di Cercapersone Android con icone
- 30. Come riconoscere il gesto di scorrimento in UIScrollView
Mai trovare una soluzione a questo? – Eric
Vorrei che ci fosse una buona soluzione a questo. Sembra che ci siano due modi per implementarlo: implementare manualmente i riconoscimenti gestuali o implementare manualmente il paging. – UrK
Sì E 'possibile che l'ho implementato prima di 6 mesi. puoi fare manualmente il riconoscimento dei gesti .. – JohnWhite