Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MBProgressHUD无法覆盖键盘_Ios_Mbprogresshud - Fatal编程技术网

Ios MBProgressHUD无法覆盖键盘

Ios MBProgressHUD无法覆盖键盘,ios,mbprogresshud,Ios,Mbprogresshud,当我试图在键盘同时显示时显示MBProgressHUD时,我使用以下代码,但HUD对象无法覆盖键盘: SNSSharerAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; HUD = [[MBProgressHUD showHUDAddedTo:delegate.window animated:YES] retain]; HUD.mode = MBProgressHUDModeIndeterminate; H

当我试图在键盘同时显示时显示MBProgressHUD时,我使用以下代码,但HUD对象无法覆盖键盘:

SNSSharerAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
HUD = [[MBProgressHUD showHUDAddedTo:delegate.window animated:YES] retain];
HUD.mode = MBProgressHUDModeIndeterminate;
HUD.labelText = @"Posting...";
[HUD show:YES];

我认为HUD对象显示在代理窗口的前面,键盘也显示,所以最后添加了哪个,哪个是前面。我错了吗?

将hud添加到包含键盘的第二个窗口。 显示键盘时,应用程序中有两个UIWindow实例。第一个是常规窗口,第二个是临时键盘窗口。 代码:


在ios4.3和ios5.x中测试,它确实有效。

对于ios 9,改为[[UIApplication sharedApplication]windows]objectAtIndex:1]尝试使用[[UIApplication sharedApplication]windows]lastObject]

所以会是这样

UIWindow *tempKeyboardWindow = [[[UIApplication sharedApplication] windows] lastObject];
MBProgressHUD *hud=[[MBProgressHUD alloc] initWithWindow:tempKeyboardWindow];
hub.mode=MBProgressHUDModeIndeterminate;
hub.labelText=@"Sending...";
[tempKeyboardWindow addSubview:hud];
[hud show:YES];

为什么不在HUD出现时隐藏键盘呢?用户将很难在有HUD覆盖的情况下与键盘交互。@titaniumdecoy,因为在这种情况下,我不想隐藏键盘。+1也适用于iOS7!为了简化代码,只需将hud init方法替换为以下方法:MBProgressHUD*hud=[MBProgressHUD showhuddeto:tempKeyboardWindow animated:YES];然后,您可以删除代码的最后两行代码([tempKeyboardWindow addSubview:hud];和[hud show:YES];)应用程序崩溃。我在ios12.2上工作
UIWindow *tempKeyboardWindow = [[[UIApplication sharedApplication] windows] lastObject];
MBProgressHUD *hud=[[MBProgressHUD alloc] initWithWindow:tempKeyboardWindow];
hub.mode=MBProgressHUDModeIndeterminate;
hub.labelText=@"Sending...";
[tempKeyboardWindow addSubview:hud];
[hud show:YES];