2012-03-02 70 views
2

我有这样的代码:UIView没有出现在键盘上?

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

的问题是,认为出现的键盘,这已经是在屏幕下方。我该如何解决?

+1

被吓了一会儿,我以为甲骨文推出了“UISwing”! – doNotCheckMyBlog 2012-03-02 01:16:27

回答

1

OK了一段时间了,我听不懂你想做的事。你有2个选项。

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

  • 使用UIActionSheet在键盘显示按钮像它在消息应用程序确实,当你按下相机将图片发送给别人。

我会推荐以后。

编辑: 看看这个为您定制UIActionSheet Show a view over the keyboard

+0

我基本上做了我自己的动作表,而不是使用默认的动作表。所以我想复制UIActionSheet的行为。 – Andrew 2012-03-02 01:06:51

+0

@Andrew我更新了我的答案 – Bot 2012-03-02 01:09:59

1

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

+0

我该怎么做? – Andrew 2012-03-02 01:07:30

+0

查看samvermette的回答。 – 2012-03-02 14:00:16

7

显示在键盘的顶部一些人认为最简单的方法是把对你的windowLevel属性设置为UIWindowLevelAlert一个UIWindow内这一观点。例如:

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,你会看到他们创造的窗户,他们的windowLevel设置为UIWindowLevelAlert。)

+0

谢谢!那么我也需要通过'[myWindow setHidden:YES]来隐藏它;' – Nianliang 2012-11-13 06:50:06

+0

谢谢!这对我很有用,但是一旦我解雇了我无法与我的用户界面进行交互的视图。在键盘中还有一个奇怪的行为。我的焦点仍然在UItextField中,如果我按任意键,我的文本框中没有改变,但如果我按退格键,我的文本被删除。 – JiteshW 2013-05-09 09:45:47

+0

这对iOS 9不适用:( – Daniel 2015-11-25 15:22:50