Невозможно воспроизвести звук с помощью UIAlertView - PullRequest
1 голос
/ 28 мая 2011

Часть моего твика должна воспроизводить звук и отображать UIAlertView при получении определенного сообщения.Затем, когда UIAlertView отменяется, звук останавливается.

В данный момент отображается UIAlertView, но звук не воспроизводится.Вот мой код

#define url(x) [NSURL URLWithString:x]

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"message" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 

AVAudioPlayer *mySound;
mySound = [[AVAudioPlayer alloc] initWithContentsOfURL:url(@"/Library/Ringtones/Bell Tower.m4r") error:nil];


[mySound setNumberOfLoops:-1];  
[mySound play];

[alert show]; 
[alert release];
[mySound stop];
[mySound release];

Ответы [ 2 ]

2 голосов
/ 24 октября 2012

Установить делегата в файле .h:

@interface ViewController : UIViewController <UIAlertViewDelegate>
{
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;

@end

И установить метод, который был объявлен выше.

И в .m файле сделайте это:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/ma.mp3", [[NSBundle mainBundle] resourcePath]]];

    NSError *error;

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 

    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    audioPlayer.numberOfLoops = -1;


    [audioPlayer play];

    [alert show]; 
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex==0) {
        [audioPlayer stop];

    }
    NSLog(@"U HAVE CLICKED BUTTON");
}
2 голосов
/ 28 мая 2011

Ваш текущий код останавливает звук сразу после отображения оповещения, UIAlertViews не блокирует текущую нить в методе show.

В этом случае вы хотите остановить звук после оповещенияуволен.Для этого вам нужно установить делегат для вашего оповещения, который соответствует UIAlertViewDelegate protocol, затем, в зависимости от того, когда именно вы хотите остановить звук, вы должны добавить код, чтобы остановить проигрыватель одним из следующих методов делегата:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex

Обратите внимание, что вам нужно будет оставить ссылку на своего игрока.

Ознакомьтесь с документацией UIAlertView, чтобы узнать больше о его жизненном цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...