我有这段代码:
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];
问题是,视图显示在键盘下方,该键盘已在屏幕上显示。我该如何解决这个问题?
答案 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和UIAlertView在内部工作的方式。当其中一个可见时,看看[UIApplication sharedApplication] .windows,你会看到他们创建windows,其windowLevel设置为UIWindowLevelAlert。)< / em>的
答案 1 :(得分:1)
键盘存在于自己的窗口中。要把东西放在它上面,你要么必须把东西放进键盘的窗口(这不是支持的行为),要么创建另一个窗口并把它放在键盘上。
答案 2 :(得分:1)
好的,我花了一段时间才明白你想做什么。你有2个选择。
退出键盘并使用按钮显示视图。
当您按相机向某人发送照片时,使用UIActionSheet显示键盘上的按钮,就像在消息应用程序中一样。
我会推荐以后的。
编辑: 请查看您的自定义UIActionSheet Show a view over the keyboard