【发布时间】:2011-02-17 23:49:30
【问题描述】:
我想知道如何禁用 UIActionSheets,特别是在 UIWebView 中点击并按住超链接后显示的操作表。这些似乎在 UIWebViews 中默认启用,其中包含警报标题中相应链接的链接地址。它们也在 Safari 中启用。
(如何)是否可以在 UIWebView 中禁用所有此类操作表?
提前致谢!
【问题讨论】:
标签: iphone objective-c xcode uiwebview
我想知道如何禁用 UIActionSheets,特别是在 UIWebView 中点击并按住超链接后显示的操作表。这些似乎在 UIWebViews 中默认启用,其中包含警报标题中相应链接的链接地址。它们也在 Safari 中启用。
(如何)是否可以在 UIWebView 中禁用所有此类操作表?
提前致谢!
【问题讨论】:
标签: iphone objective-c xcode uiwebview
你可以覆盖 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
【讨论】:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"];
}
【讨论】:
dataDetectorTypes 属性可能是您正在寻找的。 如果您想禁用该操作表的可能性,只需插入代码:
webView.dataDetectorTypes = UIDataDetectorTypeNone;
【讨论】:
您也可以通过 JavaScript 调用:
document.documentElement.style.webkitTouchCallout = "none";
【讨论】:
我自己刚刚找到了这个解决方案。将此添加到您的 CSS:
body {
-webkit-touch-callout: none;
}
明确地说,这会禁用当您按住超链接时出现的操作表。
【讨论】: