ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SWTableViewCell 适配iOS14的侧滑失败

2020-11-13 17:31:43  阅读:393  来源: 互联网

标签:subviews cellSubviews iOS14 适配 self SWTableViewCell cellScrollView contentViewPa


问题:侧滑不能使用
经过查看发现是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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有