Ich versuche, eine Bildlaufansicht zu implementieren, die an Punkten beim Scrollen einrastet.UIScrollView Snap-to-Position beim Scrollen
Alle Posts, die ich hier gesehen habe, über das Einrasten zu einem Punkt, nachdem der Benutzer das Scrollen beendet hat. Ich möchte es beim Ziehen einrasten lassen.
Bisher habe ich diese die Trägheit nach dem Ziehen zu stoppen und es funktioniert gut:
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
targetContentOffset.memory = scrollView.contentOffset
}
Ich habe versucht, dies aber nicht wie gewünscht funktioniert:
var scrollSnapHeight : CGFloat = myScrollView.contentSize.height/10
scrollViewDidScroll:
func scrollViewDidScroll(scrollView: UIScrollView) {
let remainder : CGFloat = scrollView.contentOffset.y % scrollSnapHeight
var scrollPoint : CGPoint = scrollView.contentOffset
if remainder != 0 && scrollView.dragging
{
if self.lastOffset > scrollView.contentOffset.y //Scrolling Down
{
scrollPoint.y += (scrollSnapHeight - remainder)
NSLog("scrollDown")
}
else //Scrolling Up
{
scrollPoint.y -= (scrollSnapHeight - remainder)
}
scrollView .setContentOffset(scrollPoint, animated: true)
}
self.lastOffset = scrollView.contentOffset.y;
}
Wenn ich dies versuche, muss der Benutzer nach dem Einrasten den Finger nach oben ziehen und dann erneut ziehen. Gibt es eine Möglichkeit, ohne Nachbesserungen zu machen? – Gizmodo
@gizmodo Ich konnte es nicht verstehen. Wenn Sie auf die Position klicken, können Benutzer sie ziehen, aber die Bildlaufleiste wird nicht gescrollt. Nun zu welchem Ereignis möchtest du die scrollView erneut scrollen lassen? –
@gizmodo Wenn Sie nach dem Beenden des ScrollView-Vorgangs mit dem Benutzer aufhören möchten, http://stackoverflow.com/a/35197919/1378447 –