0

Es gibt diesen Fehler passiert, wenn ich eine UICollectionViewCell außerhalb des Rahmens der Sammlung ziehen: die contentOffset der Sammlung ist auf 0 zurückgesetzt, ich glaube, nach oben scrollen, auch wenn Sie die Zelle über ziehen unter der Sammlung. Das Problem ist, dass contentOffset manuell dorthin zurückgesetzt werden muss, wo es vorher war und dass es visuell verzögert ist.Dragging Zelle außerhalb von UICollectionView Frame ändert seinen InhaltOffset

Ich habe versucht, die Scroll-Verriegelung beim Ziehen, wie die folgenden

- (void)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout willBeginDraggingItemAtIndexPath:(NSIndexPath *)indexPath { 
    collectionView.scrollEnabled = NO; 
} 

- (void)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout didEndDraggingItemAtIndexPath:(NSIndexPath *)indexPath { 
    collectionView.scrollEnabled = YES; 
} 

und es tut nichts ändert Content noch. Auch hat die folgende

- (CGPoint)collectionView:(UICollectionView *)collectionView targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset { 

    if (proposedContentOffset.y > -10.0f) { // Minimum scroll from top is -10 
     return CGPointMake(proposedContentOffset.x, -10.0f); 
    } 
    return proposedContentOffset; 
} 

- (void)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout willEndDraggingItemAtIndexPath:(NSIndexPath *)indexPath { 

    if (collectionView.contentOffset.y > -10.0f) { // Minimum scroll from top is -10 
     [collectionView setContentOffset:CGPointMake(collectionView.contentOffset.x, -10.0f)]; 
    } 
} 

die Content zurückgesetzt sobald sie sich ändert und das funktioniert gut, aber die Content geändert wird während des Ziehens und der Reset geschieht nur, wenn der Benutzer die Zelle freigibt, so gibt es eine Verzögerung. Kann ich den contentOffset während des Ziehens irgendwie sperren?

Ich denke, es lohnt sich meiner Meinung nach Struktur zu erwähnen ist derzeit

UIScrollView 
    UICollectionView 
    UICollectionView (the one that has drag-drop enabled) 

Die Mutterscroll innerhalb beide Rollen der Sammlungen vereinigt, so dass ein Problem sein könnte. Wenn die Auflistung nach dem Inhalt von contentOffset nach oben gescrollt wird, dringt sie leicht in die darüber liegende Sammlung ein.

Antwort

0

erkennen ich das Projekt für das Ziehen des LXReorderableCollectionViewFlowLayout Rahmen wurde mit und auf UICollectionViews fallen, so inspizierte ich diesen Quellcode und festgestellt, dass das Verfahren, das aus der Sammlung leckereien ziehen

ist
- (void)handleScroll:(NSTimer *)timer 

so habe ich eine wenig Kontrolle über case LXScrollingDirectionUp eine maximale Kante versetzt zu haben, dass ich als Eigenschaft dieser Klasse festgelegt, wie die folgenden

// distance calculated above: how much to scroll based on drag action 
if (distance + contentOffset.y > _maxScrollingEdgeOffset.top) { 
    distance = 0; 
} 

Und das regelte es!

Verwandte Themen