UIMenuController在被呈现后立即被解雇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIMenuController在被呈现后立即被解雇相关的知识,希望对你有一定的参考价值。

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

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

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

enter image description here

答案

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

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

另一答案

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

- (BOOL) canBecomeFirstResponder { 
   return YES; 
}
另一答案

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

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

另一答案

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

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

以上是关于UIMenuController在被呈现后立即被解雇的主要内容,如果未能解决你的问题,请参考以下文章

在 UITextField 的 editingDidBegin 中显示 UIMenuController

如何使单元格中的 UIButton 在被点击后立即保持特定状态?

即时更新 UIMenuController

UIViewController 的视图在呈现后立即改变尺寸

如何在 SpriteKit 中呈现场景后立即接收触摸事件?

如何从 iOS 的 UIMenuController 中删除默认的 UIMenuItem?