2012-10-21 55 views
0

我有以下代碼:iPhone搖晃過程中執行代碼

- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
    if (motion == UIEventSubtypeMotionShake){ 
     NSLog(@"Detected a shake"); } 
} 

此代碼NSLogs當振動開始了,我也可以實施motionEnded然後將它的NSLog當振動結束,但我要的是執行代碼在抖動期間(iPhone晃動時進度條從0到100)。

你能幫我解決嗎?

回答

0

在動作開始回調時,您應該創建一個執行函數的線程。該功能應該做你想做的事情「在」搖晃期間。當調用motionEnded回調函數時,您應該終止該線程。

查看NSThread文檔以獲取更多信息。

最值得注意的是看:

+0

是的,但問題是,motionEnded有時不能確認,保持甚至運行的功能,如果你不要動搖它 – 1337code

+0

你還應該聽取'-motionCancelled:withEvent:'。無論是那個還是'​​-motionEnded:withEvent:'都會被調用。然而,如果仔細觀察文檔,看起來如果「過長」,搖動手勢將被取消。我無法找到「太長」的時間長短的具體數字。如果這是一個問題,您將不得不更加直接地收聽加速度計數據。 – drewag