7

当我关闭通过在 iPhone 上的 UIWebView 中点击 UIMenuController 上的定义打开的字典时,我不断收到以下错误:-

Unbalanced calls to begin/end appearance transitions for <_UIFallbackPresentationViewController: 0x10ab9640>.

在此错误之后,UIMenuController 将停止显示在任何 UIWebView 中。

有什么想法吗?

更新:错误实际上是在打开字典视图时出现的,而不是在关闭它时。

更新 2:错误是应用程序范围的。任何有可选文本的地方(即 webview、textview 等)我只能使用一次定义字典。出现此错误,然后我必须退出应用程序并重新启动它才能使用字典。

4

2 回答 2

4

终于找到了这个问题的答案。当系统呈现字典时,它的窗口会获得焦点(请参阅 UIWindow 中的 makeKeyAndVisible:),这很棒。当关闭保存字典的窗口没有正确地给主应用程序窗口返回焦点时,问题就出现了。

如果您在字典出现之前和之后打印出 [UIApplication sharedApplication].keyWindow,那么您将看到在您的应用程序窗口是 keyAndVisible 之前和之后它是一个不同的窗口。对我来说,我有一个单独的应用程序消息窗口,它位于状态栏的顶部,这就是字典被解散后的 keyAndVisible 。

因此,我所要做的就是在我的 UIWindow 子类中有以下覆盖方法错误地接收到焦点:

- (void) makeKeyWindow {
  AppDelegate * appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  [appDelegate.window makeKeyAndVisible];
}

如果您没有自己的 UIWindow 来获得焦点,我不确定这对那些人来说将如何工作,但绝对最坏的情况是您可以添加一个虚拟 UIWindow 来接收焦点并从上面添加完全相同的代码。

于 2012-12-21T00:29:28.800 回答
1

错误消息建议您开始转换,但缺少对相应 end 方法的调用。

  • 您是否尝试过在没有动画的情况下进行过渡?( animated: NO)

  • 有时在使用 switch 语句并忘记break;

  • 如果您正在执行序列,请执行它-viewDidAppear而不是-viewWillAppear

希望它有所帮助!:)

于 2012-10-23T00:32:25.743 回答