2010-11-03 4 views
15

Ich habe eine NSSsplitView (NO UISplitView (Controller) !!) mit drei Unteransichten. Nun, für den letzten Teiler (Index 1), möchte ich, dass der Teiler den ziehenden Cursor nicht zeigt (zwei Pfeile zeigen voneinander). Ich habe dies das Ziehen zu stoppen, aber der Cursor noch zeigt nach oben:Machen Sie den Teiler einer NSSplitView nicht verschiebbare und zeigen Sie nicht die Drag-Cursor

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

Bitte beachte, dass ich nur den Cursor für den Teiler bei Index 1 ausblenden möchten. Kann mir jemand helfen? Vielen Dank. :)


Nein, ich will nicht BWToolkit verwenden.

Antwort

0

Verwenden Sie splitView:constrainMaxCoordinate:ofSubviewAt: und splitView:constrainMinCoordinate:ofSubviewAt: anstelle von splitView:constrainSplitPosition:ofSubviewAt:.

Die ersten beiden Methoden werden einmal aufgerufen, wenn der Benutzer die Maus zieht, und sie geben genügend Informationen für NSSplitView, um zu wissen, wie der Cursor während des Ziehens geändert wird.

Letzteres wird wiederholt aufgerufen, wenn der Benutzer den Splitter zieht. Daher verfügt NSSsplitView nicht über genügend Informationen, um zu wissen, dass Sie jedes Mal einen konstanten Wert zurückgeben und daher den Cursor nicht ändern können.

+8

** Siehe nächste Antwort von * Mike A * für eine bessere Annäherung. ** – Jay

73

Ich weiß, dass dies für eine Weile beantwortet wurde, aber die gelieferte Antwort war nicht meine Bedürfnisse.

Mit der Delegate-Methode splitView:effectiveRect:forDrawnRect:ofDividerAtIndex: können Sie das effektive Rechteck zum Ziehen des Teilers festlegen. Wenn Sie NSZeroRect zurückgeben, wird kein Drag-Cursor angezeigt, unabhängig von Ihrer Konfiguration in splitView:constrainMaxCoordinate:ofSubviewAt: und splitView:constrainMinCoordinate:ofSubviewAt:.

Hoffe, dass jemand anderen hilft, der hier landet.

+0

Ausgezeichnet! Genau das, was ich brauchte :) –

+0

Sicher geholfen! Danke – isobar

+1

Dies funktioniert perfekt, um zu verhindern, dass der Größenänderungs-Cursor angezeigt wird, selbst wenn Sie Auto-Layout verwenden, um die geteilte Ansicht zu verwalten! Vielen Dank! – Andrew

Verwandte Themen