0
我有一個簡單的應用程序,它由2個視圖組成。頂視圖有一個加速度計代表。當用戶在頂部視圖在屏幕上時抖動。然後調用pushviewcontroller並顯示子視圖。問題是當子視圖出現時,我搖動它,它仍然捕捉搖動動作並導致我出錯。所以幫助我。提前致謝。在其他視圖捕捉動搖行動?
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
const float violence = 1.2;
static BOOL beenhere;
BOOL shake = FALSE;
if (beenhere) return;
beenhere = TRUE;
if (acceleration.x > violence || acceleration.x < (-1* violence))
shake = TRUE;
if (acceleration.y > violence || acceleration.y < (-1* violence))
shake = TRUE;
if (acceleration.z > violence || acceleration.z < (-1* violence))
shake = TRUE;
if (shake) {
[self playSound:@"suzu"];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"noVib"] == NO) {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
[[UIAccelerometer sharedAccelerometer] setDelegate:nil];
[self presentModalViewController:mMoviePlayer animated:YES];
[self play];
}
時調用play方法和視頻播放結束後,pushviewcontroller將被調用,副視點會出現
下面是處理所有movieplayer東西類。
- (void) initPlayer{
if (mMoviePlayer != nil){
[mMoviePlayer release];
}
mMoviePlayer = [[MoviePlayerViewController alloc] initWithContentURL:[self createURL]];
[[NSNotificationCenter defaultCenter] removeObserver:mMoviePlayer
name:MPMoviePlayerPlaybackDidFinishNotification object:mMoviePlayer.moviePlayer];
[mMoviePlayer.moviePlayer setShouldAutoplay:NO];
mMoviePlayer.moviePlayer.backgroundView.backgroundColor = [UIColor blackColor];
mMoviePlayer.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
mMoviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:mMoviePlayer.moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePreloadDidFinish:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:mMoviePlayer.moviePlayer];
- (void) moviePlayBackDidFinish:(NSNotification*)notification
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:mMoviePlayer.moviePlayer];
[self dismissModalViewControllerAnimated:YES];
[mMoviePlayer release];
mMoviePlayer = nil;
[self toNext];
}
的評論好,謝謝。我只是添加了一些代碼。 – 2012-07-24 06:27:02
如果這是真的,你應該測試modalViewController屬性是否等於你的mMoviePlayer,那麼你可以使用它,而不是像我最初的想法那樣聲明一個新變量。第一個解決方案應該按預期工作。 – 2012-07-24 06:42:52
我改變了條件搖&& mMoviePlayer。所以子視圖不會抓住(或者是什麼)搖動動作。但是當子視圖出現緩存顯示在子視圖上。換句話說,我搖動它,然後我再次回到主菜單,然後我再次搖動它,這次子視圖立即向我展示了subivew的早期內容,然後將它改變爲正確的看法。這是什麼意思 ? – 2012-07-24 06:45:10