わかった。[NSSound soundNamed: ] で再生されるシステム サウンドをリストするきちんとした方法を探していましたが、API には使用可能なサウンドのリストがないように思えました。
また、これをグーグルで検索したところ、かなり古く、部分的にすでに非推奨になっているソースがいくつか見つかりました。アプリケーションにサウンドピッカーが必要な場合- システムが提供するサウンドのリストを取得する最良の方法は何ですか?
わかった。[NSSound soundNamed: ] で再生されるシステム サウンドをリストするきちんとした方法を探していましたが、API には使用可能なサウンドのリストがないように思えました。
また、これをグーグルで検索したところ、かなり古く、部分的にすでに非推奨になっているソースがいくつか見つかりました。アプリケーションにサウンドピッカーが必要な場合- システムが提供するサウンドのリストを取得する最良の方法は何ですか?
これが私の実装です。
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
自由に使用でき、あらゆる目的で誰でも利用できます。改善した場合は、共有してください:)
iOSSystemSoundsLibraryですべてのシステム サウンドを確認する