2

我有这个代码:

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];

问题是,视图出现在键盘下方,它已经在屏幕上。我该如何解决?

4

3 回答 3

7

在键盘顶部显示某些视图的最简单方法是将该视图放在UIWindow您将其windowLevel属性设置为的 a 中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 和 UIAlertView 在内部的工作方式。当其中一个可见时,请查看 [UIApplication sharedApplication].windows ,您会看到它们创建的窗口的 windowLevel 设置为 UIWindowLevelAlert。)

于 2012-03-02T02:21:39.590 回答
1

键盘存在于它自己的窗口中。要将内容放在上面,您要么必须将内容放在键盘的窗口中(这不是受支持的行为),要么创建另一个窗口并将其放在键盘上。

于 2012-03-02T00:56:59.120 回答
1

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

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

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

我会推荐后者。

编辑:看看这个为您的自定义 UIActionSheet在键盘上显示视图

于 2012-03-02T01:02:56.630 回答