0

我创建了一个自定义 UIWindow、UIViewController 和 UIView,以便通过应用程序为各种屏幕呈现全屏覆盖。显示、旋转和消除覆盖效果很好。

但是,问题是在关闭自定义 UIWindow 后,我的一个基础视图上的搜索框没有闪烁的蓝色光标。出现键盘,我可以在搜索框中输入字符,但没有光标。

另一个奇怪的事情是光标在 iOS 模拟器上按预期出现,但在设备上却没有。

有人知道这里发生了什么吗?我已经尝试遍历我的覆盖视图层次结构以确保所有视图 ResignFirstResponder()。任何想法,将不胜感激。谢谢。

4

1 回答 1

0

弄清楚了。在我试图获取对原始 UIWindow 的引用时,出现了几个额外的 UIWindows。我使用 KeyWindow 属性来尝试访问我的原始窗口。但是,KeyWindow 不是我期望的 UIWindow。我有一个加载微调器处于活动状态,因此窗口的类型为 _UIAlertNormalizingOverlayWindow。所以,现在我调用 Windows 数组的 0 索引,而不是获取我的主应用程序窗口。然后我能够在正确的 UIWindow 上调用 MakeKeyAndVisible。

出于某种原因,在错误的窗口上调用 MakeKeyAndVisible 会导致一些奇怪的现象,似乎隐藏了 UITextEffectsWindow,这是 iOS 用来在文本字段等中显示光标的窗口类型。

所以,我学到的教训是:永远不要假设在访问 KeyWindow 属性时会得到哪个 windows 数组实例。

于 2012-12-01T06:24:14.577 回答