开发者

UIWebView - How to Disable Action Sheets (UIActionSheet)?

I would like to know how you can disable UIActionSheets, specifically the Action Sheets being displayed after tapping and holding hyperlinks in a UIWebView. These seem to be enabled by default in UIWebViews containing the link address of the respective link in the title of the alert. They are also enabled开发者_JS百科 in Safari.

(How) is it possible to disable all Action Sheets of this kind within a UIWebView?

Thanks in advance!


I just found this solution myself. Add this to your CSS:

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

To be clear, this disables the action sheet that appears when you hold down a hyperlink.


You can also handle this via JavaScript by calling:

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


 - (void)webViewDidFinishLoad:(UIWebView *)webView
 {
    [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"];
 }


The dataDetectorTypes property might be what you are looking for. If you want to disable that action sheet possibility, just insert the code:

webView.dataDetectorTypes = UIDataDetectorTypeNone;


You can override presentViewController in UINavigationController and do nothing like this.

@implementation CDVInAppBrowserNavigationController : UINavigationController

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

@end
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜