4

わかった。[NSSound soundNamed: ] で再生されるシステム サウンドをリストするきちんとした方法を探していましたが、API には使用可能なサウンドのリストがないように思えました。

また、これをグーグルで検索したところ、かなり古く、部分的にすでに非推奨になっているソースがいくつか見つかりました。アプリケーションにサウンドピッカーが必要な場合- システムが提供するサウンドのリストを取得する最良の方法は何ですか?

4

2 に答える 2

10

これが私の実装です。

NSSound (systemSounds.h):

#import <AppKit/AppKit.h>

@interface NSSound (systemSounds)

+ (NSArray *) systemSounds;

@end

NSSound (systemSounds.m):

#import "NSSound (systemSounds).h"

@implementation NSSound (systemSounds)

static NSArray *systemSounds = nil;

+ (NSArray *) systemSounds
{
    if ( !systemSounds )
    {
        NSMutableArray *returnArr = [[NSMutableArray alloc] init];
        NSEnumerator *librarySources = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES) objectEnumerator];
        NSString *sourcePath;

        while ( sourcePath = [librarySources nextObject] )
        {
            NSEnumerator *soundSource = [[NSFileManager defaultManager] enumeratorAtPath: [sourcePath stringByAppendingPathComponent: @"Sounds"]];
            NSString *soundFile;
            while ( soundFile = [soundSource nextObject] )
                if ( [NSSound soundNamed: [soundFile stringByDeletingPathExtension]] )
                    [returnArr addObject: [soundFile stringByDeletingPathExtension]];           
        }

        systemSounds = [[NSArray alloc] initWithArray: [returnArr sortedArrayUsingSelector:@selector(compare:)]];
        [returnArr release];
    }
    return systemSounds;
}

@end

自由に使用でき、あらゆる目的で誰でも利用できます。改善した場合は、共有してください:)

于 2012-06-08T12:46:02.377 に答える
4

iOSSystemSoundsLibraryですべてのシステム サウンドを確認する

于 2013-10-12T22:40:15.713 に答える