我試圖有一個與args調用的類方法,以異步方式來延遲,以隱藏UILabel。基本上,標籤應該出現,然後在三秒鐘內消失。我正在使用下面來完成這一點。延遲的類選擇器調用
主要方法設置所顯示的視圖
+(void)queueError:(UILabel*)messageView errorText:(NSString*)errorText{
[messageView setText:errorText];
messageView.hidden = NO;
messageView.tag = arc4random_uniform(UINT32_MAX);
[UIView animateWithDuration:0.3 delay:0.0 options:0 animations:^(){
messageView.alpha = 1.0;
}completion:^(BOOL finished){
NSArray* args = [NSArray arrayWithObjects:messageView, [NSNumber numberWithInt:messageView.tag ], nil];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[UBSNavigationUtils class] performSelector:@selector(dequeueErrorTime:) withObject:args afterDelay:3];
});
}];
}
方法後三秒延遲
+(void)dequeueErrorTime:(NSArray*)args{
UILabel* messageView = args[0];
NSInteger tag = [((NSNumber*)args[1]) integerValue];
if(messageView.tag == tag){
[[UBSNavigationUtils class] fadeOutError:messageView];
}
}
然而,我的方法永遠不會被調用被調用。
你是怎麼計算它不叫?你把斷點的方法來檢查或者只是你的UILabel沒有隱藏嗎?你在主線程上執行淡出/隱藏? – F1ank3r 2014-10-06 19:47:16