我想知道如何覆盖在UIWebView中点击并按住手指时显示的UIActionSheet(它显示链接以及打开和复制按钮)。我需要在警报中添加一个按钮,但我不知道如何自定义它。
有没有人知道如何解决这个问题?
答案 0 :(得分:3)
鉴于不存在此类API,您仍然可以 以非标准api方式自定义工作表,而无需使用私有API。最简单的可能是观察该webview的子视图,当出现一个(如弹出窗口)检查它的类时,如果是这样的弹出窗口,则自定义它。这是我尝试的方式。
仍然:这是hacky ,可能很容易在下次更新时中断。
添加观察:
[myWebView addObserver:self forKeyPath:@"subviews" options:0 context:@"popup"];
然后观察:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if (context == @"popup") {
for (UIView *view in [object subviews]) {
if ([view isKindOfClass: [UIAlertView class]])
[self customizeAlert: (UIAlertView*)view];
}
}
[super observeValueForKeyPath:keyPath
ofObject:object
change:change
context:context];
}
然后用这种方法进行自定义:
- (void)customizeAlert:(UIAlertView*)alert { ... }