如何更改 NSComboBox 弹出窗口的截断方法或宽度

发布于 2024-10-12 23:26:51 字数 97 浏览 7 评论 0原文

主文本区域可以轻松设置截断,但弹出窗口不会进行任何截断,路径相似,用户无法区分哪个路径是哪个路径。

或者是更改弹出列表的宽度以匹配最长字符串的方法,以便不需要截断?

The truncation can be easily set for the main text area but the popup does not do any truncation, with similar paths, users cannot tell which path is which.

or is the a way to change the width of the popup list to match the longest string so that truncation is not needed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

表情可笑 2024-10-19 23:26:51

不幸的是,没有官方方法可以做到这一点。

有一种方法可以做到这一点,尽管它不使用任何私有方法,但依赖于 NSComboBox 内部实现的方式,并且这种方式可能随时改变。这在 App Store 中可能是不可接受的。

如果您继承 NSComboBoxCell 并实现 NSTableViewDelegate 方法 tableView:willDisplayCell:forTableColumn:row:,则可以在文本单元格显示在组合框的弹出窗口中之前对其进行修改。

- (void)tableView:(NSTableView *)tableView
        willDisplayCell:(NSCell *)cell
        forTableColumn:(NSTableColumn *)tableColumn
        row:(NSInteger)rowIndex
{
   [cell setTruncatesLastVisibleLine:YES];
   [cell setLineBreakMode:NSLineBreakByTruncatingMiddle];
}

这是有效的,因为弹出列表是通过 NSTableView 在内部实现的,并且表视图的委托设置为弹出单元格。

There is no official way to do this, unfortunately.

There is a way to do it which, though it doesn’t use any private methods, relies on the way NSComboBoxes are implemented internally, and that could change at any time. This would probably would not be acceptable in the App Store.

If you subclass NSComboBoxCell and implement the NSTableViewDelegate method tableView:willDisplayCell:forTableColumn:row:, you can modify the text cell before it is displayed in the combo box’s popup window.

- (void)tableView:(NSTableView *)tableView
        willDisplayCell:(NSCell *)cell
        forTableColumn:(NSTableColumn *)tableColumn
        row:(NSInteger)rowIndex
{
   [cell setTruncatesLastVisibleLine:YES];
   [cell setLineBreakMode:NSLineBreakByTruncatingMiddle];
}

This works because the popup list is implemented internally with an NSTableView, and the table view’s delegate is set to the popup cell.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文