2015-09-25 66 views
5

我有子类UIWebView添加自定义UIMenuController功能,它工作得很好,直到iOS 9。我不知道什么改变了,但现在我遇到了一种情况,我点击一个链接,应该显示菜单,菜单简要显示,但被解雇(不再需要我点击)。UIMenuController被呈现后立即被解雇

我很难找出解雇源自何处。我正在观察UIMenuControllerDidHideMenuNotification通知,这确实是在菜单消失后才被调用,但我很难找到解雇的原因。

我意识到潜伏着许多不同的问题,但我想知道是否有人经历过这样的事情?有没有办法跟踪解雇的原因?

enter image description here

+0

也许如果你能发布所有相关的显示代码/隐藏菜单控制器我们可以帮助更多。 – Istvan

+0

我认为你需要显示一些代码? –

回答

7

我有与iOS9相同的问题,我认为它发生的结果是多个进程。这不是理想的解决方案,但是......在我成为FirstResponder之后,我在setMenuVisible:YES之前添加了DELAY。

[self performSelector:@selector(showMenuController :) withObject:point afterDelay:0.4];

+1

工作很好!我会尽快给予奖赏。谢谢 – Lizza

0

请在您的视图控制器中添加以下方法试试。

- (BOOL) canBecomeFirstResponder { 
    return YES; 
} 
+0

我应该澄清,我确实在那里。 – Lizza

+0

我明白了。你是否也在视图或视图控制器上调用了“-becomeFirstResponder”? – Abhinav

+0

是的,我在menuController应该显示之前调用becomeFirstResponder。这是源于观点,而不是风险投资。感谢您的帮助,顺便说一句。 – Lizza

0

我遇到了类似的问题,试图在自定义视图中显示UIMenuController。上面提到的延迟修复程序不起作用。

为了解决这个问题,我不得不重写添加到canBecomeFirstResponder所以它返回真实的,它是包含在我的两个自定义视图和的viewController。