我在想如何重写UIActionSheet,当点击并在UIWebView的链接上按住手指时(显示链接和打开和复制按钮) 。我需要在警报中添加一个按钮,但我不知道如何自定义它。如何自定义UIWebView点击按住链接图表
有没有人有关于如何解决这个问题的想法?
我在想如何重写UIActionSheet,当点击并在UIWebView的链接上按住手指时(显示链接和打开和复制按钮) 。我需要在警报中添加一个按钮,但我不知道如何自定义它。如何自定义UIWebView点击按住链接图表
有没有人有关于如何解决这个问题的想法?
鉴于不存在这样的API,您仍然可以使用以非标准api-like方式自定义工作表,而不使用专用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 { ... }
出于某种原因,' - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)更改 上下文:(void *)context'永远不会被调用,虽然我添加了观察者:/ – Pripyat 2010-09-08 15:45:28
您是否设置了一个断点来检查实际调用的观察结果?一种可能的解决方案是简单地对UIWebView进行子类化并覆盖addSubview:等等。在那里只需触发kvo通知,并且希望它能够工作。当我有标签栏控制器时, – 2010-09-09 13:48:31
没有被调用 – 2014-02-04 13:30:13
没有人有一个解决方案吗? – Pripyat 2010-09-03 06:53:02
我认为这是UIWebView的行为。 您可以尝试使用GestureRecognizers来完成自己的操作... – 2010-09-04 16:58:43
对于AppStore应用程序? – kennytm 2010-09-04 17:01:03