-2

ペン先 (xib) に、触れたときに音を鳴らしたい UIButton があります。これを実現するには、どのプロトコルに従う必要がありますか?

** オーバーホールされた質問** ここで Stack Overflow を使用している間、私は多くのことを学びました。それは、私が通常助けを必要としているもの (Objective-C、xCode) だけでなく、Stack Overflow がどのように機能するかについてもです。私はそれが膨大な量の情報とサポートであることに気付き、以前にこの質問をどのように尋ねたかを見てきましたが、まったく意味がありませんでした. 将来のユーザーを支援するために、Naveenが以下で行ったように、他の人が理解できるように、最初に求めていたものを編集しました. お詫び

4

2 に答える 2

3

このフレームワークを追加する

AudioToolBox framework

このヘッダーファイルをインクルードします。hファイル

#include <AudioToolbox/AudioToolbox.h>
CFURLRef        soundFileURLRef;
SystemSoundID   soundFileObject;

このコードをviewdidLoadに追加します

NSURL *tapSound   = [[NSBundle mainBundle] URLForResource: @"Voice035"
                                            withExtension: @"amr"];

    // Store the URL as a CFURLRef instance
self.soundFileURLRef = (CFURLRef) [tapSound retain];

    // Create a system sound object representing the sound file.
AudioServicesCreateSystemSoundID (
                                  soundFileURLRef,
                                  &soundFileObject
                                  );

ボタンタップで、このメソッドを呼び出します

 AudioServicesPlayAlertSound (soundFileObject);

Deallocでリリースする

AudioServicesDisposeSystemSoundID (soundFileObject);
CFRelease (soundFileURLRef);

詳細情報:http ://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/SystemSoundServicesReference/Reference/reference.html#//apple_ref/c/func/AudioServicesCreateSystemSoundID

于 2012-05-18T08:06:49.607 に答える
2

すべてのボタンが接続されているサウンドを再生する「オブザーバー」クラスを作成します。以下に例を示します。これはシングルトン クラスです。気まぐれに書かれており、テストされていませんが、アイデアが得られます。

//SoundObserver.h

#include <AVFoundation/AVFoundation.h>

@interface SoundObserver {

    AVAudioPlayer *audioPlayer;
}
-(void)playSound;
+(SoundObserver*)sharedInstance;

@property (nonatomic, retain) AVAudioPlayer *audioPlayer;

@end


//SoundObserver.m

static SoundObserver *instance = nil;

@implementation SoundObserver


-(id)init {

    self = [super init];

    if(self) {

  //Get path to file.
  NSString *filePath = [[NSBundle mainBundle] pathForResource:@"sound"
                                                       ofType:@"wav"];

  // filePath to URL
  NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];

  //Initialize the AVAudioPlayer.
  self.audioPlayer = [[AVAudioPlayer alloc]
                           initWithContentsOfURL:fileURL error:nil];

  // Preloads buffer and prepare for use.
  [self.audioPlayer prepareToPlay];

  [filePath release];
  [fileURL release];

    }

}

+(SoundObserver*)sharedInstance {

        @synchronized(self) {

        if (instance == nil)

            instance = [[self alloc] init];
    }

    return instance;
}


-(void)playSound {

    //make sure the audio resets to beginning each activation.

    [self.audioPlayer play];
}

-(void)dealloc {

    //Clean up
    [self.audioPlayer release];
    self.audioPlayer = nil;
    [super dealloc];
}



// User example.

In applicationDidFinishLaunching:

    [SoundObserver sharedInstance];

From here you can connect all buttons to the same function, or call it from anywhere in the App that #import's SoundObserver.h

-(IBOutlet)buttonClick:(id)sender {

    [[SoundObserver sharedInstance] playSound];
}
于 2012-05-18T03:27:20.097 に答える