如何在键盘上添加UIView - iOS

时间:2013-06-18 06:05:05

标签: iphone ios cocoa-touch uiview keyboard

我一直在尝试在iOS上显示Toast消息。我做的是当任何通知出现时,我只是拿着导航控制器视图并为我的toast消息添加了一个子视图并显示。

    UIView *top_view = self.navigationController.view;
    [top_view showToast:string];

一切正常。但是我的toast视图不是通过键盘添加(如果键盘位于前面)。任何想法可能是什么问题...小帮助可以节省我的时间...... Thanx ..

6 个答案:

答案 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;

看看这个主题 https://forums.developer.apple.com/thread/16375

答案 4 :(得分:1)

更新Swift3

UIApplication.shared.windows.last

答案 5 :(得分:0)

在iOS9中,Adithya的答案不起作用,

UIWindow *window = [UIApplication sharedApplication].windows.lastObject;

运作良好