2010-04-21 142 views
1

我有一個滾動視圖,可以滾動到兩邊(只有左和右,而不是上下)。 每當滾動視圖將X像素移動到任一側時,我都想播放短時間的聲音(小於一秒)。UIScrollView滾動播放聲音

這怎麼辦?代碼示例將不勝感激......

感謝,

回答

4

這裏是我使用的代碼:我添加了SoundEffect.h和SoundEffect.m文件到我的項目

(你可以在網上找到它們)。通過增加<UIScrollViewDelegate>到視圖控制器的.h文件和設置的UIScrollView的相關出口

SoundEffect *soundEffect; 

然後,我安裝我的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個像素火要麼方向,但您可以將其更改爲適合您需要的恆定值。 它對我很好,希望它也能幫助其他人...

+0

這實際上不起作用,因爲scrollViewDidScroll不夠快。我的滾動視圖在1秒內滾動6頁,但只獲得三次點擊。任何想法使這種方法更快火嗎? – 2012-07-23 13:03:50

1

嘗試分配你的viewController作爲滾動視圖的委託,並添加-scrollViewWillBeginDragging:方法。

+0

但是這樣只會發出一次聲音,不是嗎?我希望無論何時滾動視圖將X像素移到任何一邊,聲音都會啓動。我正在考慮在這個方法中初始化一個定時器,它將每隔0.1秒檢查一次,檢查視圖是否超過了X像素,並在相關的委託方法中停止該定時器。但我想知道是否有更好的方法來做到這一點... – 2010-04-21 13:01:18

+0

你想要聲音重複的視圖拖動?你可以使用scrollViewDidScroll :. – 2010-04-21 13:14:14

+1

謝謝。我嘗試使用scrollViewDidScroll:方法,它的效果很好... – 2010-04-21 15:14:32