【问题标题】:Make the divider of an NSSplitView undraggable and don't show the dragging cursor使 NSSplitView 的分隔线不可拖动并且不显示拖动光标
【发布时间】:2021-12-24 00:05:19
【问题描述】:

我有一个带有三个子视图的 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。

【问题讨论】:

    标签: objective-c cocoa mouse-cursor nssplitview


    【解决方案1】:

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

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

    希望能帮助到这里的其他人。

    【讨论】:

    • 即使在使用自动布局管理拆分视图时,这也能完美防止调整大小光标出现!谢谢!
    • 我无法使用这种技术完全隐藏分隔线,而是得到了幻象断开的分隔线。覆盖 NSSplitView 的 dividerThickness 属性以返回 0.0 就可以了(见stackoverflow.com/a/29049380/253485
    • 如何只为一个分频器设置这个,让其他分频器正常运行?
    【解决方案2】:

    尝试使用splitView:constrainMaxCoordinate:ofSubviewAt:splitView:constrainMinCoordinate:ofSubviewAt: 而不是splitView:constrainSplitPosition:ofSubviewAt:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多