2012-11-21 42 views
6

我對應用程序開發有點新。在一個的viewController(VPviewController)我有以下代碼:xcode ios 6搖動議調用從以前的視圖IBaction

- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
    if (motion == UIEventSubtypeMotionShake){  
     [self startGame:nil]; 
    } 
} 

在不同的viewController(VPgameViewController)我有一個不同的MotionShake事件:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
    if(event.subtype == UIEventSubtypeMotionShake){ 
     if(count < 3){ 

      [self changeText:nil]; 
      AudioServicesPlaySystemSound(1016); 
      count++; 

     }else{ 

      count = 0; 
      AudioServicesPlaySystemSound(1024); 
      UIStoryboard *storyboard = self.storyboard; 
      VPpoepViewController *shit = [storyboard instantiateViewControllerWithIdentifier:@"PoepViewController"]; 
      shit.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
      [self presentViewController:shit animated:YES completion:nil]; 
     } 
    } 
} 

當我在VPgameView我和我動搖Iphone也調用了startGame函數,這是在不同的viewController搖動事件。

我該如何阻止?

+0

也許這個(http://stackoverflow.com/questions/1342674/motionbegan-not-working)有幫助 – basvk

+0

在這兩個視圖中,我都可以成爲第一響應者,並辭去急救員。但這沒有幫助。 –

+0

你想檢測Xcode或iOS中的動作嗎?如果是後者,請不要將iOS與Xcode混淆。一個不需要Xcode來編寫iOS應用程序。 – 2012-11-21 19:29:30

回答

2

聽起來像您必須取消訂閱您的VPViewController接收其viewWillDisappear:函數中的搖動事件通知。

通常,如果您希望viewController只在可見時收到某些事件通知,則應該訂閱viewWillAppear:函數中的通知,並取消訂閱viewWillDisappear:函數。

+0

這樣做的最好方法是什麼? –

+1

若要控制viewController是否響應搖動手勢,應該爲'viewController'引入'BOOL respondsToShakeGesture'類變量。如果此bool值爲false,則'motionBegan'和'motionEnded'函數立即返回。最後,在'viewWillAppear:'函數中將bool值設置爲true,並在'viewWillDisappear:'函數中將bool值設置爲false。 – kadam