2013-10-03 2 views
0

Я разрабатываю приложение, в котором меню перемещается, чтобы открыть второе меню. Я перемещаю изображение с помощью NSTimer и хочу, чтобы он остановился, когда изображение попало на определенную координату на экране. Но то, что я сейчас использую, не работает, оно перемещает изображение, но оно не останавливается. Что я делаю не так? EDIT: это Xcode 5Таймер не останавливается, когда UIImage попадает в определенную точку

- (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

Добро пожаловать. Не стесняйтесь утверждать ответ, если он вам полезен :) –

Смежные вопросы