UIActivityIndi​​catorView显示在键盘下方

时间:2013-02-20 20:38:05

标签: ios objective-c uialertview uiactivityindicatorview

在一个静态库(lib.a)中,我在一个故事板中有一个NavigationController,我在点击按钮后启动:

[mainWindow.rootViewController presentViewController:newController animated:NO completion:Nil];

newController内我有一个UITextField,我在becomeFirstResponder设置viewDidLoad,另一个按钮在点按时我要显示UIAlertView之后按“确定”应该在所有内容(包括键盘)上显示UIActivityIndicatorView

用于显示UIActivityIndicatorView的代码如下

UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow];
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
spinner.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
                            UIViewAutoresizingFlexibleRightMargin |
                            UIViewAutoresizingFlexibleTopMargin |
                            UIViewAutoresizingFlexibleBottomMargin);
spinner.center = CGPointMake(CGRectGetWidth(mainWindow.bounds)/2, CGRectGetHeight(mainWindow.bounds)/2);
spinner.frame = mainWindow.bounds;
spinner.backgroundColor = [UIColor darkGrayColor];
spinner.alpha = 0.7f;
[mainWindow addSubview:spinner];

每当用户点击按钮时,我执行以下操作:

UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Confirmation"
                                                      message:@"Are you sure?"
                                                     delegate:self
                                            cancelButtonTitle:@"No"
                                            otherButtonTitles:@"Yes", nil];
[message show];

当点击时,我有一个简单的方法:

//Initializing spinner
[spinner startAnimating];

 //Execute NSURL Connection....

问题是UIActivityIndicatorView没有显示在键盘顶部。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试在

之后添加
[mainWindow addSubview:spinner];

类似

[mainWindow bringSubviewToFront:spinner];

尝试将此视图用作UIActivityIndi​​catorView的超级视图

- (UIView *)keyboardView {
    NSArray *windows = [[UIApplicatio sharedApplication] windows];
    for (UIWindow *window in [windows reverseObjectEnumerator]) {
        for (UIView *view in [window subviews]) {
            if (!strcmp(object_getClassName(view), "UIKeyboard"))  {
                return view;
            }
        }
    }

    return nil;
}

答案 1 :(得分:0)

在显示指标之前,将UIActivityIndicatorView设置为窗口的最前面的子视图

[mainWindow bringSubviewToFront:spinner];

之前添加代码:[spinner startAnimating];
相关问题