UIView没有出现在键盘上?

时间:2012-03-02 00:51:12

标签: iphone objective-c iphone-softkeyboard

我有这段代码:

JMenuController *menuController = [[JMenuController alloc] init];
    NSArray *buttonsArray = [NSArray arrayWithObjects:@"From Libary", @"Take Photo or Video", nil];
    [menuController showMenuWithTitle:@"Add Media" ButtonTitles:buttonsArray animated:YES];
    self.currentMenuType = JCreateMenuTypeNewMedia;

    [[[[UIApplication sharedApplication] delegate] window] addSubview:menuController];

问题是,视图显示在键盘下方,该键盘已在屏幕上显示。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:7)

在键盘顶部显示某些视图的最简单方法是将该视图放在UIWindow内,并将windowLevel属性设置为UIWindowLevelAlert。类似的东西:

UIView *myView = [[UIView alloc] initWithFrame:rect];

UIWindow *myWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
myWindow.windowLevel = UIWindowLevelAlert;
[myWindow addSubview:myView];

[myWindow makeKeyAndVisible];

如果您正在使用ARC,请确保对myWindow保持强烈的引用。否则,它将自动释放,因此不会被添加到您的应用程序窗口。

(这就是UIActionSheet和U​​IAlertView在内部工作的方式。当其中一个可见时,看看[UIApplication sharedApplication] .windows,你会看到他们创建windows,其windowLevel设置为UIWindowLevelAlert。)< / em>的

答案 1 :(得分:1)

键盘存在于自己的窗口中。要把东西放在它上面,你要么必须把东西放进键盘的窗口(这不是支持的行为),要么创建另一个窗口并把它放在键盘上。

答案 2 :(得分:1)

好的,我花了一段时间才明白你想做什么。你有2个选择。

  • 退出键盘并使用按钮显示视图。

  • 当您按相机向某人发送照片时,使用UIActionSheet显示键盘上的按钮,就像在消息应用程序中一样。

我会推荐以后的。

编辑: 请查看您的自定义UIActionSheet Show a view over the keyboard