1

我有一个 UICollectionView,它当时显示一个页面/单元格,分页已启用。单元格是自定义的,它们包含上半部分的图像滚动视图和下半部分的 WebView。WebView 包含带有一些链接词的文本,单击时链接会打开覆盖下半部分的模态文本视图。

首先,当单击 webView(并且只是 webView)(不仅仅是链接字)并且当我想滑动到另一个页面时,我遇到了一个问题,下一页/单元格是黑色的(颜色collectionView.backgroundColor),但是在打印时collectionView.visibleCells它存在。后来从坐标中我发现第二个单元格的坐标与第三个单元格的坐标相同。

UICollectionView cellForItemAt indexPath 正在跳过 iOS 10 中的行索引

我跟着这个答案,因为他有同样的问题并设置

collectionView.isPrefetchingEnabled = false

它修复了空白页,但另一个问题出现了。

现在,当我单击 webView 时,该单元格的行为就像它已从集合中删除一样,我可以单击页面并获得响应,并且除了没有调用 collectionView 回调方法之外的所有内容,当我返回该页面时也不会显示,当我返回该页面时也不会显示滑出。

当页面不可见时,如果打开,我需要关闭模式 textView。

当我点击 scrollview/imageView 然后滑动一切正常。

如果我单击其他页面上的 webView,第一个页面开始做出反应。

4

1 回答 1

0

问题在于 webView 的内存周期。它使不可见的单元格保持活动状态,因此没有激活回调方法。所以我想打破 webView 内存引用,但我将 webView 作为第一响应者放在 willDisplay 单元回调上。我猜它会覆盖以前的 webView 参考,现在一切正常,即使使用collectionView.isPrefetchingEnabled = true.

 func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {

    if let cell = cell as? CustomViewCell {
        cell.webView.becomeFirstResponder()
    }
 }
于 2019-09-02T09:47:07.410 回答