我一直在尝试在 iOS 上显示敬酒消息。我所做的是,当任何通知出现时,我只需获取导航控制器视图并为我的 toast 消息添加一个子视图并显示。
UIView *top_view = self.navigationController.view;
[top_view showToast:string];
一切正常。但是我的吐司视图没有添加到键盘上(如果键盘在前面)。任何想法可能是什么问题......一点帮助可能会节省我的时间......谢谢......
我一直在尝试在 iOS 上显示敬酒消息。我所做的是,当任何通知出现时,我只需获取导航控制器视图并为我的 toast 消息添加一个子视图并显示。
UIView *top_view = self.navigationController.view;
[top_view showToast:string];
一切正常。但是我的吐司视图没有添加到键盘上(如果键盘在前面)。任何想法可能是什么问题......一点帮助可能会节省我的时间......谢谢......
您可以通过将子视图添加到主窗口来显示 toast。
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 消息,否则在主窗口中。
我在此链接中找到了另一种方法,使用该方法您可以直接访问键盘的 UIView(如果需要)。
您必须将您的子视图添加到:
UIWindow *window = [UIApplication sharedApplication].windows.lastObject;
它位于键盘顶部。
通常键盘视图不是主窗口的一部分。当您专注于任何文本字段时,它会出现在新窗口中。
尝试以下代码来访问您的键盘视图。
[[[UIApplication sharedApplication] windows] objectAtIndex:1]
请记住,这仅在您的屏幕上有键盘时才有效。
另一种方法是添加自定义 UIWindow,然后将其 WindowLevel 设置为最后一个窗口的 +1。
像这样的东西
NSArray *windows = [[UIApplication sharedApplication] windows];
UIWindow *lastWindow = (UIWindow *)[windows lastObject];
myWindow.windowLevel = lastWindow.windowLevel + 1;
Swift3 更新
UIApplication.shared.windows.last
在 iOS9 中,Adithya 的回答是行不通的,
UIWindow *window = [UIApplication sharedApplication].windows.lastObject;
运作良好