我一直在尝试在iOS上显示Toast消息。我做的是当任何通知出现时,我只是拿着导航控制器视图并为我的toast消息添加了一个子视图并显示。
UIView *top_view = self.navigationController.view;
[top_view showToast:string];
一切正常。但是我的toast视图不是通过键盘添加(如果键盘位于前面)。任何想法可能是什么问题...小帮助可以节省我的时间...... Thanx ..
答案 0 :(得分:9)
您可以通过将子视图添加到主窗口来显示祝酒词。
UIWindow *toastDisplaywindow = [[[UIApplication sharedApplication] delegate] window];;
for (UIWindow *testWindow in [[UIApplication sharedApplication] windows])
{
if (![[testWindow class] isEqual:[UIWindow class]])
{
self.toastDisplaywindow = testWindow;
break;
}
}
[toastDisplaywindow showToast:string];
如果正在显示键盘,它将显示为单独的窗口,位于通常的主窗口上方。因此,检查是否正在显示键盘。如果是,则在该窗口上添加toast消息,否则在主窗口上添加。
我在这个link中找到了另一种方法,使用它可以直接进入键盘的UIView(如果需要)。
答案 1 :(得分:8)
您必须将子视图添加到:
UIWindow *window = [UIApplication sharedApplication].windows.lastObject;
位于键盘顶部。
答案 2 :(得分:3)
通常键盘视图不是主窗口的一部分。当您在任何文本字段中聚焦时,它将以新窗口显示。
尝试使用以下代码访问键盘视图。
[[[UIApplication sharedApplication] windows] objectAtIndex:1]
请记住,这只有在屏幕上有键盘时才有效。
答案 3 :(得分:2)
另一种方法是添加自定义UIWindow,然后将其WindowLevel设置为最后一个窗口的+1。
像这样的东西
NSArray *windows = [[UIApplication sharedApplication] windows];
UIWindow *lastWindow = (UIWindow *)[windows lastObject];
myWindow.windowLevel = lastWindow.windowLevel + 1;
答案 4 :(得分:1)
更新Swift3
UIApplication.shared.windows.last
答案 5 :(得分:0)
UIWindow *window = [UIApplication sharedApplication].windows.lastObject;
运作良好