以编程方式添加搜索文本框作为Cocoa中的菜单项

时间:2011-07-26 02:12:46

标签: objective-c cocoa uisearchbar menuitem

我想拥有像iTunes一样的搜索输入框。我有我的工具栏显示,我有下面的代码,显示一个自定义的toobaritem,它有正确的灰色描述,并显示文本'Fnurd ..'紫色,但文字是不可编辑的!这让我疯了,我做错了什么?

- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
{
    NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier];

    if ( [itemIdentifier isEqualToString:@"SearchItem"] ) {

        //Land in sight !
        NSLog(@"### Setting up Search Item Menu Entry");        

        //Starter size
        NSRect cellFrame = NSMakeRect(0,0,200,25);
        //Create/allocate Control
        searchMenuControl = [[NSControl alloc] initWithFrame:cellFrame];
        //Create/allocate Cell
        searchMenuCell = [[NSTextFieldCell alloc] initTextCell:@"Fnurd.."];

        //Assign cell to control        
        [searchMenuControl setCell:searchMenuCell];

        //Do some polishing
        [searchMenuCell setBezelStyle:NSTextFieldRoundedBezel];
        [searchMenuCell setBackgroundColor:[NSColor whiteColor]];
        [searchMenuCell setTextColor:[NSColor blackColor]];     
        [searchMenuCell setEnabled:YES];
        [searchMenuCell setCellAttribute:NSCellEditable to:YES];


        cellFrame = [searchMenuControl frame];

        // Configuration code for "SearchItem"
        [item setLabel:@"Search Records"];
        [item setPaletteLabel:[item label]];
        [item setView:searchMenuControl];
        [item setMinSize:cellFrame.size];
        [item setMaxSize:cellFrame.size];       
    }

    return [item autorelease];
}

2 个答案:

答案 0 :(得分:3)

发布到stackoverflow很神奇,你一定会在稍后找到一个google查询的答案..

Cocoa基本上有一个可以使用的搜索字段小部件..

- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
{
    NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier];

    if ( [itemIdentifier isEqualToString:@"SearchItem"] ) {

        //Land in sight !
        NSLog(@"### Setting up Search Item Menu Entry");        

        searchField = [[NSSearchField alloc] init];
        [searchField sizeToFit];

        NSRect cellFrame = [searchField frame];

        // Configuration code for "SearchItem"
        [item setLabel:@"Search"];
        [item setPaletteLabel:[item label]];
        [item setView:searchField];
        [item setMinSize:cellFrame.size];
        [item setMaxSize:cellFrame.size];       
    }

    return [item autorelease];
}

答案 1 :(得分:1)

尝试将searchMenuCell设置为可编辑。