Swift iOS 14上的TableView中会出现一个额外的UITableViewCellContentView覆盖,防止点击,但在iOS 13上可以正常工作

Swift iOS 14上的TableView中会出现一个额外的UITableViewCellContentView覆盖,防止点击,但在iOS 13上可以正常工作,swift,ios14,xcode12,Swift,Ios14,Xcode12,在使用XCode 12编译的iOS 14设备上,一个额外的UITableViewCellContentView显示在表视图的内容上方,防止点击其下方的任何按钮。这只出现在iOS 14中。它不会出现在iOS 13中。有没有关于如何移除它的想法? 您必须将视图添加到单元格内容视图,如下所示: contentView.addSubview(button) 并将您的按钮锚定到contentView: button.topAnchor.constraint(equalTo: contentView.to

在使用XCode 12编译的iOS 14设备上,一个额外的UITableViewCellContentView显示在表视图的内容上方,防止点击其下方的任何按钮。这只出现在iOS 14中。它不会出现在iOS 13中。有没有关于如何移除它的想法?

您必须将视图添加到单元格内容视图,如下所示:

contentView.addSubview(button)
并将您的按钮锚定到contentView:

button.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true

我也遇到过同样的问题,尽管我不确定我的解决方案是否适用于您。我的问题是由UISearchControllerDelegate方法presentSearchController在iOS14中被调用两次引起的。调用此方法时,我们在当前视图上叠加了一个新的“containerView”,并显示搜索结果。调用didDismissSearchController时,我们删除了此视图。问题是presentSearchController被调用了两次,从而创建了两个“containerViews”。我们会移除其中一个,但另一个卡住了,截获了我们所有的接触。我们只需要确保不添加两个“ContainerView”

这就是我们所做的

func presentSearchController(_ searchController: UISearchController) { 

   guard containerView == nil else {return}

   containerView = UIView()
   viewController.view.addSubview(containerView)

   //present search results

}

func didDismissSearchController(_ searchController: UISearchController) { 

   containerView.removeFromSuperview()
   containerView = nil

   //any other code you need

}
试试这个代码

contentView.isUserInteractionEnabled = true

有同样的问题,我们这样做:

sendSubviewToBack(contentView)

如果您的项目很大,并且很难将每个
addSubview
更改为
contentView.addSubview
,则可以将此扩展添加到您的项目中:

extension UITableViewCell {
    open override func addSubview(_ view: UIView) {
        super.addSubview(view)
        sendSubviewToBack(contentView)
    }
}

这已经完成了。您的回答意味着这个问题将发生在所有iOS 10+上,但这个问题只在iOS 14上出现。我也有同样的问题,在contentView上添加子视图而不是视图对我来说很有效。但是,您添加的关于锚的代码在这里毫无意义@RaviDamani为什么你说这意味着iOS 10+会出现问题?对不起,你完全正确。你的代码修复了它!