Cocoa NSComboBox滚动条并单击箭头

时间:2015-04-15 07:42:01

标签: objective-c cocoa

我对Objective c cocoa NSComboBox有两个问题。

  1. 如何设置滚动条始终可见,而不只是滚动列表。

  2. 我可以点击文字打开列表,而不仅仅是点击箭头。

1 个答案:

答案 0 :(得分:0)

  1. 当弹出窗口打开时,您可以在弹出窗口中找到scrollview并更改其可见属性。请参阅以下代码:https://github.com/ilg/IGResizableComboBox 步骤:
  2. a)找到组合框窗口

    - (NSWindow *)comboBoxPopUpWindow
    {
        NSWindow *child = nil;
        for (child in [[self window] childWindows]) {
    
                if ([[child className] isEqualToString:@"NSComboBoxWindow"]) {
                    break;
                }
    
            }
    
        return child;
    }
    

    b)迭代windows内容视图的子视图

    -(NSScrollView*)findScrollView:(NSWindow*)window
    {
        NSView *contentView = [window contentView];
        for(NSView *view in [contentView subViews]){
         if([[view className] isEqualToString:@"NSScrollView"]){
           return scrollView;
          }
       }
    
    }
    

    c)修改scrollview属性

    1. 您可以覆盖鼠标并打开列表。要打开列表,请参阅:How to programmatically open an NSComboBox's list?