Keyboard 如何从(辅助)UIWindow上的UITextView激活键盘

Keyboard 如何从(辅助)UIWindow上的UITextView激活键盘,keyboard,uitextview,uiwindow,addsubview,becomefirstresponder,Keyboard,Uitextview,Uiwindow,Addsubview,Becomefirstresponder,我的iPhone应用程序(基于Xcode的“单视图应用程序”)有一个UITextView(比如:myTextView),我希望用户能够编辑它。我将它设置为可编辑,一切正常(我甚至不必调用becomeFirstResponder) 然后我将它移动到另一个UIWindow(比如:newWindow)(位于名为self.window(单视图应用程序的)的主/根/键窗口之上) 但是现在,当我单击UITextView时,键盘不会显示 如果我这样做,一切正常: [myTextView setEditable

我的iPhone应用程序(基于Xcode的“单视图应用程序”)有一个UITextView(比如:myTextView),我希望用户能够编辑它。我将它设置为可编辑,一切正常(我甚至不必调用becomeFirstResponder)

然后我将它移动到另一个UIWindow(比如:newWindow)(位于名为self.window(单视图应用程序的)的主/根/键窗口之上)

但是现在,当我单击UITextView时,键盘不会显示

如果我这样做,一切正常:

[myTextView setEditable:是]
[myTextView成为第一响应者];//丑陋…我不需要它,但我添加了它以防万一…
[self.window addSubview:newWindow]

但键盘会立即显示(因为我设置了becomeFirstResponder),这并不好。 但是如果我删除becomeFirstResponder行,键盘根本不会显示

如果我将[self.window addSubview:newWindow]行移到上面,那么无论我做什么,键盘都不会被激活

[self.window addSubview:newWindow];//应该是这样的。。。但是,
[myTextView setEditable:是]
[myTextView成为第一响应者];//即使我输入此项,它也不起作用:-(

我尝试了[newWindow makeKeyAndVisible]什么都没有。我尝试添加一个触摸代理,并在UITextView上检测触摸(或手势),它们可以工作(我得到了我包含的NSLog消息),但同样没有键盘。我甚至尝试在newWindow顶部添加另一个字段(主窗口的字段)(以便在顶部有一个主窗口元素),仍然没有运气


我缺少什么?

您不应该将UIWindow添加为子视图。相反,如果不希望它接收键事件,可以通过调用-[UIWindow makeKeyAndVisible]或-[UIWindow setHidden:NO]来显示窗口

但是,很少需要使用多个窗口。在许多情况下,只需使用普通的UIView添加它作为子视图即可


编辑:我之前有一句关于“分配给屏幕”的令人困惑的话。UIWindow有一个属性“屏幕”,如果希望在主屏幕以外的其他屏幕上显示窗口,则可以将其指定给。不过,对于您的用例,您不必关心这一点。

您不应将UIWindow添加为子视图。相反,可以通过调用-[UIWindow makeKeyAndVisible]或-[UIWindow setHidden:否]来显示窗口如果您不希望它接收关键事件

但是,很少需要使用多个窗口。在许多情况下,只需使用普通的UIView添加它作为子视图即可

编辑:我之前有一句关于“分配给屏幕”的令人困惑的话。UIWindow有一个属性“screen”,如果您想在主屏幕以外的另一个屏幕上显示该窗口,您可以将其分配给它。不过,对于您的用例,您不必关心这个问题。

“将屏幕分配给窗口”…你是什么意思?怎么说?我理解你评论的第一部分,但不理解第二部分。我应该将myTextView添加到我理解的另一个视图(作为子视图)中,对它们进行分组。但不是“将屏幕分配给窗口”部分。“将屏幕分配给窗口”…你是什么意思?怎么说?我理解你评论的第一部分,但不理解第二部分。我应该将myTextView添加到我理解的另一个视图(作为子视图)中,对它们进行分组。但不理解“将屏幕分配给窗口”部分。