我在下面有一些源代码可以重现这一点。在HUD有机会出现之前调用showWithStatus
并解除,导致控件在下次调用showWithStatus
时不显示。有没有人知道任何变通办法?
// Commenting these will show SVProgressHUD
[SVProgressHUD showWithStatus:@"Loading..."];
[SVProgressHUD dismiss];
// Comment above to show SVProgressHUD
[SVProgressHUD showWithStatus:@"Loading..."];
[self performSelector:@selector(dismissHUD) withObject:nil afterDelay:5.0f];
编辑:我在这里有一些source code可以重现这一点。
答案 0 :(得分:0)
我为第二次HUD显示做了这个:
[self performSelector:@selector(showHud) withObject:nil afterDelay:0.1];
答案 1 :(得分:0)
我已经解决了这个问题:
<强> 1。添加属性
@property (nonatomic, readonly, getter = isDismissing) BOOL dismissing;
2.add flag
- (void)dismissWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay {
_dismissing = YES;
...
void (^completionBlock)(void) = ^{
...
_dismissing = NO;
};
...
}
重命名功能
- (void)showImage:(UIImage)image status:(NSString)status duration:(NSTimeInterval)duration
以姓名
- (void)showImageSS:(UIImage)image status:(NSString)status duration:(NSTimeInterval)duration
3.延迟
- (void)showImage:(UIImage*)image status:(NSString*)status duration:(NSTimeInterval)duration
{
if(self.isDismissing){
__weak SVProgressHUD *weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * SVProgressHUDDefaultAnimationDuration),dispatch_get_main_queue(), ^{
[weakSelf showImageSS:image status:status duration:duration];
});
}else{
[self showImageSS:image status:status duration:duration];
}
}
- (void)showImageSS:(UIImage*)image status:(NSString*)status duration:(NSTimeInterval)duration
{
// this is orginal function - (void)showImage:(UIImage)image status:(NSString)status duration:(NSTimeInterval)duration code block
}
finsh谢谢大家