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

问题描述:

可以轻松地为主文本区域设置截断,但弹出窗口不会执行任何截断操作,但具有相似的路径,用户无法分辨哪个路径是哪个路径。如何在NSComboBox的弹出窗口中更改截断方法或宽度

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

不幸的是,没有官方的方式来做到这一点。

有一种方法可以做到这一点,虽然它不使用任何私有方法,但依赖于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内部实施,并表视图的委托设置为弹出电池。

+0

谢谢,我会看看这是否会为我们工作。 – 2011-01-21 06:32:16