2010-11-03 13 views
15

J'ai un NSSplitView (NO UISplitView (contrôleur) !!) avec trois sous-vues. Maintenant, pour le dernier diviseur (index 1), je veux que le diviseur ne montre pas le curseur qui traîne (deux flèches pointant l'une vers l'autre). J'ai ce pour arrêter le Traîner, mais le curseur est encore apparaître:Rendre le diviseur d'un NSSplitView undraggable et ne pas afficher le curseur de glissement

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

Notez que je ne veux cacher le curseur pour le diviseur à l'index 1. Quelqu'un peut-il m'aider? Merci. :)


Non, je ne veux pas utiliser BWToolkit.

Répondre

0

Essayez d'utiliser splitView:constrainMaxCoordinate:ofSubviewAt: et splitView:constrainMinCoordinate:ofSubviewAt: au lieu de splitView:constrainSplitPosition:ofSubviewAt:.

Les deux méthodes précédentes sont appelées une seule fois lorsque l'utilisateur fait glisser la souris et qu'elles fournissent suffisamment d'informations pour que NSSplitView sache comment modifier le curseur pendant le glissement. Ce dernier est appelé à plusieurs reprises alors que l'utilisateur fait glisser le séparateur. NSSplitView n'a donc pas assez d'informations pour savoir que vous renvoyez une valeur constante à chaque fois et que vous ne pouvez donc pas modifier le curseur.

+8

** Voir la réponse suivante * Mike A * pour une meilleure approche .. ** – Jay

73

Je sais que cela a été répondu depuis un moment, mais la réponse fournie ne répondait pas à mes besoins.

La méthode déléguée splitView:effectiveRect:forDrawnRect:ofDividerAtIndex: vous permet de définir le rectangle effectif pour faire glisser le diviseur. Si vous renvoyez NSZeroRect, aucun curseur de glissement n'apparaîtra, quelle que soit votre configuration dans splitView:constrainMaxCoordinate:ofSubviewAt: et splitView:constrainMinCoordinate:ofSubviewAt:.

Espoir qui aide quelqu'un d'autre qui atterrit ici.

+0

Excellent! Exactement ce dont j'avais besoin :) –

+0

Certainement aidé! Merci – isobar

+1

Cela fonctionne parfaitement pour empêcher le curseur de redimensionnement d'apparaître même en utilisant Auto Layout pour gérer la vue partagée! Merci! – Andrew