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
精彩评论