我使用presentModalViewController:animated:
方法呈现了一个视图控制器。我们将此视图称为myView。在myView上,我有一个按钮,当点击时,它应该创建一个UIAlertView
并显示它。
但是,当我点按此按钮时,会创建alertView,但不会显示在myView的顶部。相反,它隐藏在myView后面。
注意:为了验证alertView是否隐藏在myView后面,我在myView上添加了第二个按钮,当它被点击时,myView视图控制器自行解除(即[self dismissModalViewControllerAnimated:YES]
)。当myView被解除时,会出现alertView。
知道为什么alertView隐藏在myView背后?
答案 0 :(得分:1)
我认为在您展示UIAlertView之后,您将在UIWindow上添加子视图。它位于UIWindow层中的UIAlertView之上。
确保您不在UIWindow上添加任何内容,因为这不是一个好习惯。
如果您仍然想要添加子视图,只需发送subviewToBack:
祝你好运
答案 1 :(得分:0)
我有同样的问题。在Controller1中,我呈现Controller2,在Controller2中我创建了一个alertView。但是alertView被置于Controller2的视图之后。
我发现如果我不是从任何viewController创建alertView(通过使用公共函数),alertView将出现在屏幕的前面。
+ (void)alertShow:(NSString *)alertMsg {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:alertMsg
message:nil delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil];
[alert show];
[self performSelector:@selector(dismissAlertView:) withObject:alert afterDelay:2.5];
}
希望它能解决你的问题。
答案 2 :(得分:0)
我也遇到了这个问题。这是间歇性的,但我认为它与在后台线程上显示警报有关。
从Xcode 9开始,Swift 4:
要测试函数是否在主线程上运行,请使用:Thread.current.isMainThread
print("On main thread: \(Thread.current.isMainThread)")
要在主线程上显示提醒或执行任何操作,请使用OperationQueue.main
:
OperationQueue.main.addOperation {
// code to perform on main thread
}