NSScrollView不会在NSAlert上作为附件滚动?

时间:2014-02-02 00:59:16

标签: objective-c macos cocoa

是否可以在NSAlert上使用NSScrollView作为附件?

我想提示用户,并在提示中显示图像列表。

我的想法是显示包含图像的NSScrollView,但当滚动视图显示为NSAlert工作表的一部分时,它会显示,它的内容也是如此,但您无法滚动它。

我不清楚我是否在NSScrollView设置上缺少一些简单的步骤,或者这只是对NSAlert的约束。

非常感谢任何帮助。

以下是相关代码:

NSAlert *alert = [NSAlert alertWithMessageText:prompt
                                 defaultButton:defaultButtonText
                               alternateButton:altButtonText
                                   otherButton:nil
                     informativeTextWithFormat:@"%@",infoText];

// create the scrollview
NSScrollView* scrollview = [[NSScrollView alloc] initWithFrame:NSMakeRect(0, 0, 250, imageHeight)];

// fill the scrollview with images
int i = 0;
for (NSImage* image in images)
{
    // create a new image view
    NSImageView*  imageView = [[NSImageView alloc] initWithFrame:NSMakeRect(i*150, 5, 145, 145)];
    [imageView setImage:image];

    // add the subview to the content view and increase size of contents
    [scrollview.contentView addSubview:imageView];
    [scrollview.contentView setFrame: NSMakeRect(0,0,(i+1)*150, 155) ];

    // increment image counter
    i++;
}

// add the scrollview to the alert sheet
[alert setAccessoryView:scrollview];

// show the alert sheet
NSWindow* win = [[[NSApplication sharedApplication] windows] objectAtIndex:0];
[alert beginSheetModalForWindow:win
                  modalDelegate:delegate
                 didEndSelector:endselector
                    contextInfo:nil];

1 个答案:

答案 0 :(得分:4)

我认为您要将图像视图添加到滚动视图的文档视图,而不是其内容视图。