【问题标题】:How to dismiss contextual menu of UIWebView programmatically?如何以编程方式关闭 UIWebView 的上下文菜单?
【发布时间】:2015-05-29 11:28:15
【问题描述】:

我有一个 iPad 应用程序,其中 UIWebView 正在加载一个 html 页面,该页面由 href 标记中的 n 个电话号码组成。 点击这些电话号码后,iOS 默认的contextual 菜单(如弹出式控制器)会显示 3 个默认选项,例如 --- 发送消息、添加到联系人和复制。

在某个时间点,我只是将所有UIViewController 弹出到rootViewController,所以当这个动作被执行时,如果这个contextual 菜单显示在屏幕上,那么即使当视图来自rootViewController 视图,该视图由UIWebView 和电话号码组成。我猜这是因为contextual 菜单是从UIWindow 显示的(比如UIAlertView)。

此时我想以编程方式关闭或隐藏此 contextual 菜单。

我已经尝试通过以下尝试来实现这一目标,

1) 在viewDidDisappear

[UIMenuController sharedMenuController].menuVisible = NO;

2)我尝试了如下快速枚举,

    for (UIView *subView in view.subviews){
        if ([subView isKindOfClass:[UIPopoverController class]]) {
            [(UIPopoverController *)subViews dismissPopoverAnimated:YES];
        }
    }
//similiarly I tried by checking for UIMenuController as well

上述尝试均未成功实现这一目标。 谁能告诉我如何以编程方式关闭UIWebViewcontextual 菜单?

提前感谢任何帮助。

【问题讨论】:

    标签: ios objective-c uiwebview


    【解决方案1】:

    在弹出到根视图控制器之前,您可以使用

    目标-C:

    [self dismissViewControllerAnimated:NO completion:nil];
    

    斯威夫特:

    self.dismissViewControllerAnimated(false, completion: nil)
    

    摆脱上下文菜单。

    【讨论】:

    • 感谢您的回复,但这对我也不起作用 :-( 我的问题是在弹出视图控制器之前,上下文菜单已经在屏幕中,并且即使在关闭当前视图后也会出现在 viewWillDisappear视图控制器或弹出到 rootview 控制器,屏幕上的弹出窗口仍然存在于屏幕上,因为它是从 iOS 添加到窗口的,我猜想 UIAlertViews
    • 我设法重新创建了您的问题并通过将其放入包含 Web 视图的视图控制器中来修复它。那么弹出到root的整个动作就是 self.dismissViewControllerAnimated(false, completion: nil) self.navigationController!.popToRootViewControllerAnimated(true) 你确定你在正确的地方关闭了视图控制器吗?
    • 是的,我以同样的方式做到了,但仍然没有运气:(
    • 您能分享一下用于将所有视图控制器弹出到根目录的代码吗?
    • 循环所有预设的视图控制器并调用dismissViewControllerAnimated api
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多