2013-10-03 57 views
0

我正在開發一個應用程序,其中菜單移開以顯示第二個菜單。我正在用NSTimer移動圖像,並希望圖像在屏幕上遇到特定座標時停止。但是我目前使用的是不工作,它正在移動圖像,但它並沒有停止。我究竟做錯了什麼?編輯:這是Xcode 5UIImage到達某個點時不會停止計時器

- (IBAction)showSubMenu:(id)sender { 

moveTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(moveMenus) userInfo:nil repeats:YES]; 
[self stopMovement]; 


} 

-(void)stopMovement { 
if (mainMenu.center.y < -160) { 
    [moveTimer invalidate]; 
    moveTimer = nil; 
} 

} 


-(void)moveMenus { 
mainMenu.center = (CGPointMake(mainMenu.center.x, mainMenu.center.y-1)); 
goButton.center = (CGPointMake(goButton.center.x, goButton.center.y-1)); 
Info.center = (CGPointMake(Info.center.x, Info.center.y-1)); 
helpButton.center = (CGPointMake(helpButton.center.x, helpButton.center.y-1)); 

subMenu.center = (CGPointMake(subMenu.center.x, subMenu.center.y-1)); 
description.center = (CGPointMake(description.center.x, description.center.y-1)); 
playEndless.center = (CGPointMake(playEndless.center.x, playEndless.center.y-1)); 
playQuick.center = (CGPointMake(playQuick.center.x, playQuick.center.y-1)); 
playSoundboard.center = (CGPointMake(playSoundboard.center.x, playSoundboard.center.y-1)); 
confirm.center = (CGPointMake(confirm.center.x, confirm.center.y-1)); 

} 

感謝您的幫助提前! Rafee

回答

1

你需要調用您的每一次查看移動stopMovement,所以改變這樣的代碼:

- (IBAction)showSubMenu:(id)sender 
{ 
    moveTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(moveMenus) userInfo:nil repeats:YES]; 
} 

- (void)stopMovement 
{ 
    if (mainMenu.center.y < -160) 
    { 
     [moveTimer invalidate]; 
     moveTimer = nil; 
    } 
} 


- (void)moveMenus 
{ 
    mainMenu.center = (CGPointMake(mainMenu.center.x, mainMenu.center.y-1)); 
    goButton.center = (CGPointMake(goButton.center.x, goButton.center.y-1)); 
    Info.center = (CGPointMake(Info.center.x, Info.center.y-1)); 
    helpButton.center = (CGPointMake(helpButton.center.x, helpButton.center.y-1)); 

    subMenu.center = (CGPointMake(subMenu.center.x, subMenu.center.y-1)); 
    description.center = (CGPointMake(description.center.x, description.center.y-1)); 
    playEndless.center = (CGPointMake(playEndless.center.x, playEndless.center.y-1)); 
    playQuick.center = (CGPointMake(playQuick.center.x, playQuick.center.y-1)); 
    playSoundboard.center = (CGPointMake(playSoundboard.center.x, playSoundboard.center.y-1)); 
    confirm.center = (CGPointMake(confirm.center.x, confirm.center.y-1)); 

    // Call here 
    [self stopMovement]; 
} 
+0

非常感謝!我會在5分鐘內接受答案(非常快速的回覆) – RafeeJ

+0

不客氣。如果對你有幫助,請不要猶豫,以確認答案:) –