Я думаю, вам нужен флаг в moveStickFig
, который устанавливает значение true при вызове tapFig
.
-(void) moveStickFig:(NSTimer *)timer
{
if( isTimerInvalidateSet )
{
[ self timer:invalidate ];
return;
}
// ......
}
// you need to pass the same timer instance to `tapFig` that you earlier passed to `moveStickFig`.
-(void) tapFig:(id)sender
{
isTimerInvalidateSet = true;
[ self moveStickFig:theTimerInstance ] ; // theTimerInstance is same as earlier you passed to `moveStickFig`
isTimerInvalidateSet = false;
// ......
}
Примечание: Обычно вы устанавливаете таймер для повторного вызова функции с фиксированнойкадров в секунду.Таймер выполняет работу по вызову с такой скоростью.Нет необходимости повторно передавать экземпляр таймера.Если это то, что вы хотите, тогда ОК.However, if you need your game logic to be continued, you need to reset the isTimerInvalidateSet to false.
Надеюсь, это поможет!