当我关闭通过点击 iPhone 上 UIWebView 中 UIMenuController 上的“定义”打开的字典时,我不断收到以下错误:-
Unbalanced calls to begin/end appearance transitions for <_UIFallbackPresentationViewController: 0x10ab9640>.
发生此错误后,UIMenuController 将停止在任何 UIWebView 中显示。
有什么想法吗?
UPDATE:该错误实际上是在字典视图打开时显示的,而不是在关闭它时显示的。
更新2:该错误是应用程序范围内的。任何有可选文本的地方(即 webview、textview 等)我只能使用定义字典一次。出现此错误,然后我必须退出应用程序并再次启动它才能使用字典。
终于找到了这个问题的答案。当系统呈现字典时,它的窗口获得焦点(请参阅 UIWindow 中的 makeKeyAndVisible: ),这很棒。当忽略保存字典的窗口无法正确给予主应用程序窗口后焦点时,就会出现问题。
如果您在字典呈现之前和之后打印出 [UIApplication sharedApplication].keyWindow ,那么您将看到应用程序窗口之前是 keyAndVisible ,之后它是一个不同的窗口。对我来说,我有一个单独的应用程序消息窗口,位于状态栏顶部,而该窗口就是字典被关闭后的 keyAndVisible。
因此,我所要做的就是在我的 UIWindow 子类中使用以下重写方法来修复它,该方法错误地接收了焦点:
- (void) makeKeyWindow {
AppDelegate * appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.window makeKeyAndVisible];
}
我不确定如果你没有自己的 UIWindow 来获得焦点,这将如何工作,但绝对最坏的情况是你可以添加一个虚拟的 UIWindow 来接收焦点并从上面添加完全相同的代码段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)