【问题标题】:Play sound when UIScrollView is scrollingUIScrollView 滚动时播放声音
【发布时间】:2010-04-21 11:59:45
【问题描述】:

我有一个可以滚动到两侧的滚动视图(只能左右滚动,不能上下滚动)。 每当滚动视图向任一侧移动 X 像素时,我都想播放短声(不到一秒)。

如何做到这一点?代码示例将不胜感激...

谢谢,

【问题讨论】:

    标签: iphone audio uiscrollview


    【解决方案1】:

    这是我使用的代码:

    我将 SoundEffect.h 和 SoundEffect.m 文件添加到我的项目中(您可以在网上找到它们)。 然后,我创建了一个音效实例:

    SoundEffect *soundEffect;
    

    然后,通过将<UIScrollViewDelegate> 添加到视图控制器的 .h 文件并设置 UIScrollView 的相关出口,我将 UIViewController 设置为 UIScrollView 的委托。

    -(void)viewDidLoad方法中,我初始化了我的音效:

    NSBundle *mainBundle = [NSBundle mainBundle];
    soundEffect = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"Tik" ofType:@"wav"]];
    

    然后,我实现了这两种方法:

    #pragma mark -
    #pragma mark Scroll View Delegate Methods
    
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
    {
        lastScrollPosition = scrollView.contentOffset.x / 55;
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {   
        if ((int)(scrollView.contentOffset.x / 55) != lastScrollPosition1)
        {
            lastScrollPosition1 = scrollView.contentOffset.x / 55;
            [soundEffect1 play];
        }
    }
    

    我需要声音效果每 55 个像素向任一方向发射一次,但您可以将其更改为适合您需要的恒定值。 它对我很有用,希望它也能帮助其他人......

    【讨论】:

    • 这实际上不起作用,因为 scrollViewDidScroll 的触发速度不够快。我的滚动视图在 1 秒内滚动 6 页,但只获得了 3 次点击。有什么想法可以让这种方法更快地触发吗?
    【解决方案2】:

    尝试将您的 viewController 指定为滚动视图的委托,并添加 -scrollViewWillBeginDragging: 方法。

    【讨论】:

    • 但这只会发出一次声音,不是吗?我希望只要滚动视图将 X 像素移动到任一侧,声音就会开始。我正在考虑在此方法中初始化一个计时器,它将每隔 0.1 秒左右检查一次视图是否超过 X 像素,并在相关委托方法中停止该计时器。但我想知道是否有更好的方法来做到这一点......
    • 您希望声音在视图被拖动时重复?你可以使用 scrollViewDidScroll:.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多