SWTableViewCell 适配iOS14的侧滑失败
作者:互联网
问题:侧滑不能使用
经过查看发现是iOS14的侧滑失败,使用的是第三方 SWTableViewCell
怎么回事呢?
最终使用xcode查看层的工具看出问题 如下图
image.png
可以看到UITableViewCellContentView 没有在scrollview上,并且它们两个并行且UITableViewCellContentView在上面,这样scrollview怎么可能滚动
经此查找代码如下
// Add the cell scroll view to the cell
UIView *contentViewParent = self;
UIView *clipViewParent = self.cellScrollView;
if (![NSStringFromClass([[self.subviews objectAtIndex:0] class]) isEqualToString:kTableViewCellContentView])
{
// iOS 7
contentViewParent = [self.subviews objectAtIndex:0];
clipViewParent = self;
}
NSArray *cellSubviews = [contentViewParent subviews];
[self insertSubview:self.cellScrollView atIndex:0];
for (UIView *subview in cellSubviews)
{
[_contentCellView addSubview:subview];
}
这里取出self.subviews中的第0个判断是否是UITableViewCellContentView
如果不是就取出来 作为contentViewParent
这里打印我们看下iOS14是什么样的?
image.png
可以看到第1个是UITableViewCellContentView
这样我们就找到原因了 然后修改下代码
// Add the cell scroll view to the cell
UIView *contentViewParent = self;
UIView *clipViewParent = self.cellScrollView;
BOOL isHaveContentView = NO;
for (UIView *view in self.subviews) {
if ([NSStringFromClass([view class]) isEqualToString:kTableViewCellContentView]) {
isHaveContentView = YES;
}
}
if (!isHaveContentView)
{
// iOS 7
contentViewParent = [self.subviews objectAtIndex:0];
clipViewParent = self;
}
NSArray *cellSubviews = [contentViewParent subviews];
[self insertSubview:self.cellScrollView atIndex:0];
for (UIView *subview in cellSubviews)
{
[_contentCellView addSubview:subview];
}
在运行 解决了问题
这里不知道为什么使用iOS14.2的模拟器没有这个问题
标签:subviews,cellSubviews,iOS14,适配,self,SWTableViewCell,cellScrollView,contentViewPa 来源: https://www.cnblogs.com/meijiao/p/13970488.html