2013-05-18 3 views
0

В touchesBegan Я вызываю метод [self animateWindow];, когда касаюсь UILabel. Он оживляет и приносит окно сверху. Когда я снова коснусь этого UILabel, я не хочу, чтобы этот метод [self animateWindow]; был вызван снова, потому что он анимирует и снова отображает окно, которое уже отображается. Как мне это сделать? Любая помощь? Я пробовал искать по всему, не смог найти точный ответ.Проверьте, был ли вызван метод и не вызывал его снова

+0

Вы можете проверить текущее состояние до/или во время вызова функции? –

+0

Является ли это C++, Objective-C или Objective-C++? Пожалуйста, пометьте его, если это необходимо. – Angew

+0

Цель-C Спасибо за внимание. – Vikr

ответ

3

Просто создайте переменную экземпляра, которая является BOOL, как использовать его в качестве флага:

@property (assign, monatomic) BOOL hasAnimated; 

- (void) touchesBegan... 
{ 
    if (!self.hasAnimated) { 
     [self animateWindow]; 
     self.hasAnimated = YES; 
    } 
} 

На основе вашего расширенного описания в комментариях, вы будете нуждаться, чтобы добавить больше логики, которая проверяет, которые ярлык на самом деле прикосновения. Лучшим решением может быть использование распознавателей жестов на каждой из этикеток. Затем у вас есть прямой доступ к представлению распознавателя жестов, чтобы проверить, какая метка была (возможно, с помощью tag), и вы можете добавлять и удалять жесты в зависимости от того, в каком состоянии вы находитесь (только некоторые ярлыки должны реагировать на касания, и они должны показать или скрыть).

+0

Как это сделать? – Vikr

+0

in viewDidLoad должен ли я сделать BOOL hasAnimated = FALSE; ? – Vikr

+0

Да. State 'hasAnimated = FALSE;' внутри вашего viewDidLoad. –

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