2013-02-14 2 views
1

Я использую [performSelector:@selector(reloadData) withObject:nil afterDelay:0.01] внутри IBAction UIButton, метод reloadData делает некоторые подзоны на основном представлении определенным образом, проблема в том, что я нажимаю кнопку быстро и многократно селектор «ReloadData» выполняется несколько раз, событие, хотя я отменяя все предыдущие запросы на этот селектор, и это приводит к дублированию для подвидов в главном окнеИспользовать performSelector: withObject: afterDelay: in UIButton action

-(IBAction) myButtonIsTapped 
{ 
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(reloadData) object:nil]; 

    [self performSelector:@selector(reloadData) withObject:nil afterDelay:0.01]; 

} 

и перезагрузить метод данных, как следующее:

-(void) reloadData 
{ 
    @synchronized(self){ 
     // clear all subviews from the main view 
     // draw new subviews 
    } 
} 
+0

Как вы знаете, что изображение дублируется? –

ответ

3

Что об этом:

-(IBAction) myButtonIsTapped 
{ 
    [self.myButton setUserInteractionEnabled:NO]; 

    [self performSelector:@selector(reloadData) withObject:nil afterDelay:0.01]; 

} 

-(void) reloadData 
{ 
    // Long task... 
    // Enable the button again: 
    [self.myButton setUserInteractionEnabled:YES]; 

} 

Иногда это просто легче контролировать то, что пользователь делает (UI), чем логически дело с тем, что он сделал.

+0

, если я нажимаю кнопку. Пока функция userInteraction отключена, действие кнопки, выполняемое после активации userInteraction, возникает, почему это происходит? –

+0

Дело в том, что после того, что вы хотите сделать, вы должны снова включить кнопку. – Peres

0

Сделайте одну вещь, создайте одну BOOL variable и установите в viewdidload да и функцию регистрации, если это да, тогда вызов метода, а также не делайте его в методе buttonmake.

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