2010-11-03 8 views
15

Ho un NSSplitView (NO UISplitView (Controller) !!) con tre sotto-visualizzazioni. Ora, per l'ultimo divisore (indice 1), voglio che il divisore non mostri il cursore di trascinamento (due frecce che puntano l'una dall'altra). Ho questo per fermare il trascinamento, ma il cursore è ancora mostrando up:Rende il divisore di un NSSplitView non trascinabile e non mostra il cursore di trascinamento

- (CGFloat)splitView:(NSSplitView *)splitView constrainSplitPosition:(CGFloat)proposedPosition ofSubviewAt:(NSInteger)dividerIndex { 
    if (dividerIndex == 1) { 
    return [splitView frame].size.width - 161; 
    } 
} 

Nota che ho solo voglio nascondere il cursore per il divisore di indice 1. Qualcuno può aiutarmi? Grazie. :)


No, non voglio usare BWToolkit.

risposta

0

Provare a utilizzare splitView:constrainMaxCoordinate:ofSubviewAt: e splitView:constrainMinCoordinate:ofSubviewAt: anziché splitView:constrainSplitPosition:ofSubviewAt:.

Gli ex due metodi vengono chiamati una volta mentre l'utente trascina il mouse e forniscono sufficienti informazioni per NSSplitView per sapere come modificare il cursore durante il trascinamento.

Quest'ultimo viene chiamato ripetutamente mentre l'utente trascina lo splitter, quindi NSSplitView non dispone di informazioni sufficienti per sapere che si sta restituendo un valore costante ogni volta e quindi non è possibile modificare il cursore.

+8

** Vedere la risposta successiva di * Mike A * per un approccio migliore .. ** – Jay

73

So che questo è stato risposto per un po ', ma la risposta fornita non soddisfa le mie esigenze.

Il metodo delegato splitView:effectiveRect:forDrawnRect:ofDividerAtIndex: consente di impostare il rettangolo effettivo per il trascinamento del divisore. Se si restituisce NSZeroRect, non verrà mai visualizzato alcun cursore di trascinamento, indipendentemente dall'impostazione in splitView:constrainMaxCoordinate:ofSubviewAt: e splitView:constrainMinCoordinate:ofSubviewAt:.

Speranza che aiuti qualcun altro che atterra qui.

+0

Eccellente! Esattamente quello che mi serviva :) –

+0

Certamente aiutato! Grazie – isobar

+1

Questo funziona perfettamente per evitare che il cursore di ridimensionamento venga visualizzato anche quando si usa Auto Layout per gestire la vista divisa! Grazie! – Andrew

Problemi correlati