UIMenuController在被呈现后立即被解雇

问题描述 投票:5回答:4

我已经将UIWebView子类化添加到自定义UIMenuController功能中,并且它在iOS 9之前运行良好。我不确定发生了什么变化,但现在我遇到了一种情况,当我点击链接时,应该显示菜单,菜单短暂显示,但被解雇(没有更多来自我)。

我很难搞清楚解雇的起源。我正在观察UIMenuControllerDidHideMenuNotification通知,这确实在菜单消失后立即被调用,但我很难找到解雇的原因。

我知道有很多不同的问题可能会潜伏,但我想知道是否有人之前曾经历过这样的事情?有没有办法以某种方式追踪解雇的原因?

enter image description here

ios uikit ios9 uimenucontroller
4个回答
8
投票

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

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


1
投票

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

- (BOOL) canBecomeFirstResponder { 
   return YES; 
}

0
投票

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

要修复它,我必须向canBecomeFirstResponder添加覆盖,以便它返回true,同时返回到我的自定义视图和它包含的viewController。


0
投票

它很奇怪;但是,在我的情况下,我将标签的UIFont设置为.SFUIText-Light,它导致menuController自动关闭。解决方案是将字体更改为SanFranciscoDisplay

顺便说一下,如果你使用git作为你的版本控制,我建议你使用git bisect来调试哪个提交导致这个错误。

© www.soinside.com 2019 - 2024. All rights reserved.