2009-11-20 9 views

Respuesta

10

Lea la sección Scroll View Programming Guide al desplazarse a una posición específica. Hay ejemplos allí para arriba o abajo. Simplemente cambiaría las matemáticas para calcular el origen en el medio de su NSView. Algo como:

-(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

Esto no funciona cuando la vista del documento es más pequeña que la vista de desplazamiento. La vista del documento está anclada en la parte inferior izquierda (o arriba a la izquierda si está volteada). –

Cuestiones relacionadas