【问题标题】:UIWebView - How to Disable Action Sheets (UIActionSheet)?UIWebView - 如何禁用操作表 (UIActionSheet)?
【发布时间】:2011-02-17 23:49:30
【问题描述】:

我想知道如何禁用 UIActionSheets,特别是在 UIWebView 中点击并按住超链接后显示的操作表。这些似乎在 UIWebViews 中默认启用,其中包含警报标题中相应链接的链接地址。它们也在 Safari 中启用。

(如何)是否可以在 UIWebView 中禁用所有此类操作表?

提前致谢!

【问题讨论】:

    标签: iphone objective-c xcode uiwebview


    【解决方案1】:

    你可以覆盖 UINavigationController 中的 presentViewController 并且不做类似的事情。

    @implementation CDVInAppBrowserNavigationController : UINavigationController
    
    - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion NS_AVAILABLE_IOS(5_0){
        //Do nothing.
    }
    
    @end
    

    【讨论】:

      【解决方案2】:
       - (void)webViewDidFinishLoad:(UIWebView *)webView
       {
          [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"];
       }
      

      【讨论】:

        【解决方案3】:

        dataDetectorTypes 属性可能是您正在寻找的。 如果您想禁用该操作表的可能性,只需插入代码:

        webView.dataDetectorTypes = UIDataDetectorTypeNone;
        

        【讨论】:

          【解决方案4】:

          您也可以通过 JavaScript 调用:

          document.documentElement.style.webkitTouchCallout = "none";
          

          【讨论】:

            【解决方案5】:

            我自己刚刚找到了这个解决方案。将此添加到您的 CSS:

            body {
              -webkit-touch-callout: none;
            }
            

            明确地说,这会禁用当您按住超链接时出现的操作表

            【讨论】:

            • 是的,你是对的,我写错了,但指的是操作表,而不是警报。非常感谢! ;-)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-05-09
            • 2016-12-06
            相关资源
            最近更新 更多