其他分享
首页 > 其他分享> > SWTableViewCell 适配iOS14的侧滑失败

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