2

可以很容易地为主文本区域设置截断,但弹出窗口不做任何截断,路径相似,用户无法分辨哪个路径是哪个。

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

4

1 回答 1

3

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

有一种方法可以做到这一点,尽管它不使用任何私有方法,但依赖于 NSComboBoxes 在内部实现的方式,并且随时可能发生变化。这在 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 实现的,并且表格视图的委托设置为弹出单元格。

于 2011-01-21T00:18:08.487 回答