2009-11-20 13 views

Répondre

10

Lire la section Scroll View Programming Guide sur le défilement vers une position spécifique. Il y a des exemples pour le haut ou le bas. Vous devez juste changer le calcul pour calculer l'origine basée sur le milieu de votre NSView. Quelque chose comme:

-(void)scrollToCenter:(NSScrollView*)scrollView 
{ 
    const CGFloat midX = NSMidX([[scrollView documentView] bounds]); 
    const CGFloat midY = NSMidY([[scrollView documentView] bounds]); 

    const CGFloat halfWidth = NSWidth([[scrollView contentView] frame])/2.0; 
    const CGFloat halfHeight = NSHeight([[scrollView contentView] frame])/2.0; 

    NSPoint newOrigin; 
    if([[scrollView documentView] isFlipped]) 
    { 
     newOrigin = NSMakePoint(midX - halfWidth, midY + halfHeight); 
    } 
    else 
    { 
     newOrigin = NSMakePoint(midX - halfWidth, midY - halfHeight); 
    } 

    [[scrollView documentView] scrollPoint:newOrigin]; 
} 
+4

Cela ne fonctionne pas lorsque la vue du document est plus petite que la vue défilement. La vue du document est épinglée en bas à gauche (ou en haut à gauche si elle est inversée). –