IOS:滚动视图中的声音

Posted

技术标签:

【中文标题】IOS:滚动视图中的声音【英文标题】:IOS: sound in a scrollview 【发布时间】:2011-12-06 15:55:55 【问题描述】:

我有这个代码:

- (void) setAudioscroll
NSString *path = [NSString stringWithFormat:@"%@/%@",
                  [[NSBundle mainBundle] resourcePath],
                  @"scroll1.mp3"];
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
soundScroll = [[AVAudioPlayer alloc] initWithContentsOfURL:filePath error:nil];
[soundScroll prepareToPlay]; 



- (void) scrollViewDidScroll:(UIScrollView *)scrollView


    [soundScroll play];

然后我想在滚动视图滚动时发出声音。但是当我滚动它时,我发现它不能正常工作,因为当它调用 mp3 声音时,它会在短时间内停止滚动。我可以使用单独的线程吗?

【问题讨论】:

【参考方案1】:
- (void) scrollViewDidScroll:(UIScrollView *)scrollView

在单次滚动期间被多次调用,时间间隔很短,您不想在每次发生此回调时都调用[soundScroll play];,而是使用此回调

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

以便在滚动开始时播放一次声音,或者其中任何一个

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

如果您想要用户滚动后播放的声音。如果你想让一个短的声音在滚动中连续循环,你可以将AVAudioPlayer numberOfLoops 属性设置为负值,使其无限循环,然后在滚动停止时停止。

【讨论】:

我明白你告诉我的,但我的 mp3 是一个“剪辑”,不到一秒钟……然后我多次调用 mp3 在scrollViewDidScroll中放一个NSLog,你会看到它在滚动过程中的调用速度。您可以做的是将 AVAudioPlayer numberOfLoops 属性设置为负值,使其无限循环,然后在滚动停止时停止。

以上是关于IOS:滚动视图中的声音的主要内容,如果未能解决你的问题,请参考以下文章

iOS:滚动视图到文本视图中的当前光标位置

ios中带有表格视图的嵌套滚动视图

ios 8 - 水平滚动视图中的按钮拦截平移事件 - 滚动不起作用

iOS 8 - 水平滚动视图中的按钮没有响应

Xamarin iOS:滚动视图中的自动布局?

将编程创建的视图垂直添加到滚动视图中(iOS 中的线性布局)