【问题标题】:runModalForTypes works but setAllowedFileTypes+runModal doesn't?runModalForTypes 有效,但 setAllowedFileTypes+runModal 无效?
【发布时间】:2011-12-22 08:43:41
【问题描述】:

当我使用时

NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pdf", @"PDF", nil];
NSInteger result    = [openPanel runModalForTypes:fileTypes];

它按预期工作(只能选择 pdf 文件),但是当我使用时

NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pdf", @"PDF", nil];
[openPanel setAllowedFileTypes:fileTypes];
NSInteger result    = [openPanel runModal];

我可以选择所有类型的文件,而不仅仅是 pdf。文档说 runModalForTypes 已被弃用,我们应该使用第二种方式。我做错了吗?

【问题讨论】:

    标签: macos cocoa nsopenpanel


    【解决方案1】:

    您是否正在为 Mac OS X 10.6 及更高版本构建?根据头文件:“在低于10.6的版本上,该属性被忽略。”

    否则,您的代码看起来是正确的(假设您在某个时候发布了fileTypes)并且对我有用(在 Mac OS X 10.7.2 上测试)。

    一个小建议是使用统一类型标识符来识别 PDF,而不是硬编码文件扩展名,如下所示:

    NSArray *fileTypes = [NSArray arrayWithObjects:(id)kUTTypePDF, nil];
    

    【讨论】:

    • 我在 10.6 机器上构建和运行,但我的 xcode 是 3.1.3 版
    猜你喜欢
    • 2017-01-08
    • 2012-05-08
    • 2017-03-15
    • 2014-10-30
    • 2011-03-08
    • 2013-11-27
    • 2010-11-29
    • 2017-12-13
    • 2015-01-05
    相关资源
    最近更新 更多