iOS - 在不中断用户交互的情况下在屏幕上显示 SVProgressHUD 消息

iOS - Show SVProgressHUD message on screen without interrupting user interaction

我正在制作同步功能,将本地核心数据与服务器同步。我想在不中断用户交互的情况下在后台进行同步。当我收到响应(无论是成功还是失败)时,应用程序应在屏幕某处显示一条消息以通知用户结果。

UIAlertController 不是一个好的选择,因为它会阻止用户操作。

目前我正在使用 SVProgressHUD:

 __weak StampCollectiblesMainViewController *weakSelf = self;
if ([[AppDelegate sharedAppDelegate] hasInternetConnectionWarnIfNoConnection:YES]) {
    [_activityIndicator startAnimating];
    [Stamp API_getStampsOnCompletion:^(BOOL success, NSError *error) {
        if (error) {
            [_activityIndicator stopAnimating];
            [SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeClear];
            [SVProgressHUD setAnimationDuration:0.5];
            [SVProgressHUD showErrorWithStatus:@"error syncronize with server"];
        }
        else {
            [_activityIndicator stopAnimating];
            [featuredImageView setImageWithURL:[NSURL URLWithString:[Stamp featuredStamp].coverImage] usingActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
            [yearDropDownList setValues:[Stamp yearsDropDownValues]];
            [yearDropDownList selectRow:0 animated:NO];
            [weakSelf yearDropDownListSelected];
            [SVProgressHUD dismiss];
        }
    }];
}

我是否可以进行修改以使用户仍然可以与应用程序交互?我只是想显示消息而不占用太多space。任何帮助深表感谢。谢谢

抱歉,您必须构建自己的自定义视图。 事实上,这并不难。我要做的只是在屏幕顶部添加一个小视图,其中包含您的自定义消息和一个关闭按钮(以允许用户快速隐藏消息)。这通常是通过将这个新视图添加到当前 window 来完成的,这样它将位于每个视图的顶部并且不会阻塞 UI(除了被该视图隐藏的部分 :) )

看起来最简单的方法就是使用 SVProgressHUDMaskTypeNone

另请查看 this issue