使NSSplitView的分隔符不可分割,并且不显示拖动光标

时间:2010-11-03 20:51:55

标签: objective-c cocoa cursor nssplitview

我有一个带有三个子视图的NSSplitView( NO UISplitView(Controller)!! )。现在,对于最后一个分隔符(索引1),我希望分隔符不显示拖动光标(两个箭头指向彼此之外)。我有这个停止拖动,但光标仍然显示:

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

请注意,我只想隐藏索引1处分隔符的光标。谁能帮我?谢谢。 :)


不,我不想使用BWToolkit。

2 个答案:

答案 0 :(得分:79)

我知道这已经回答了一段时间,但提供的答案并不符合我的需要。

委托方法splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:允许您设置拖动分隔符的有效矩形。如果您返回NSZeroRect,则不会显示任何拖动光标,无论您在splitView:constrainMaxCoordinate:ofSubviewAt:splitView:constrainMinCoordinate:ofSubviewAt:中进行设置。

希望能帮助其他人降落在这里。

答案 1 :(得分:0)

尝试使用splitView:constrainMaxCoordinate:ofSubviewAt:splitView:constrainMinCoordinate:ofSubviewAt:代替splitView:constrainSplitPosition:ofSubviewAt:

前两种方法在用户拖动鼠标时调用一次,它们为NSSplitView提供了足够的信息,以便知道在拖动过程中如何更改光标。

当用户拖动拆分器时,后者被重复调用,因此NSSplitView没有足够的信息知道您每次都返回一个常量值,因此无法更改游标。