UICollectionViewCell里面的UIWebView不调用Delegate方法

Posted

技术标签:

【中文标题】UICollectionViewCell里面的UIWebView不调用Delegate方法【英文标题】:UIWebView inside UICollectionViewCell does not call Delegate Method 【发布时间】:2013-01-13 14:54:57 【问题描述】:

我目前正在 UICollectionViewCell 中嵌入 UIWebView,以便能够查看驻留在本地数据结构中的 html 格式文本。

我知道已经说过很多次不应该将 UIWebView 嵌入到滚动视图中,但我目前看不到其他方法可以实现显示混合内容概述(这是当前的要求,到目前为止 UICollectionView 与大数据集)。

问题是,我无法调用 UIWebViews 委托方法:

- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
 navigationType:(UIWebViewNavigationType)navigationType  ... 

我需要委托方法才能显示外部链接或调用本地方法。

有没有办法做到这一点?也许通过以编程方式移交事件?

【问题讨论】:

你100%确定你设置了网络视图的代理吗? 你的代码中设置了webView的代理了吗?:self.webView.delegate = self; 唯一被调用的委托方法是:-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath ... 是的,我确实在cellForItemAtIndexPath:(NSIndexPath *)indexPathUIWebView *webviewField = (UIWebView *)[cell viewWithTag:10]; [webviewField setDelegate:self]; 中设置了代表。 webview 已经通过 Interface Builder 添加。 【参考方案1】:

感谢您的反馈!

我刚刚发现我做错了什么:

我只需要更新单元格的 contentView:[[cell contentView] setFrame:frameContainingWebViewSize]

成功了。没有调用委托方法,因为 contentView 没有覆盖 webview(clipSubviews 设置为 NO),因此没有触发点击事件。

【讨论】:

以上是关于UICollectionViewCell里面的UIWebView不调用Delegate方法的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell里面的UITextView坚持横向增长

具有动态高度的 UICollectionViewCell 使用 NSURL 进行图像下载

如何确定何时显示 UICollectionViewCell?

向 UICollectionViewCell 添加圆角和阴影

XCTest 与自定义 UICollectionViewCell

UICollectionViewCell 内的 CALayer 捏