• iOS7系统中的坑——UITableViewCellScrollView


      今天开完一系列例会后,终于迎来放假的时候了,本来中午就要下班走的,想着火车票现在还很早,也就不急着走,闲着无聊,想着之前要写的内容,索性写一篇聊以打发时光,也希望对其他人有所帮助吧。

      现在iOS的最新系统是iOS9.2了,但是对于大多数app来说,其支持的最低系统版本是iOS7或者iOS6了,但是我发现,交通银行的app居然支持到了iOS5,这点真让人吃惊,仔细一看,功能还挺全面的,还不错。所以,在开发中,目前为止,还是要支持iOS7系统的。在之前的开发中,记得曾经遇到过在适配iOS7系统时的一个问题,所以给大家分享一下。这个问题还不容易被发现,因为在我看过的开发书籍中,还没有提到过这个问题.

      举一个简单的例子,例如

      要实现一个功能:在一个自定义的cell中,cell中放置任意一个UIView(就称为customView吧),当要点击该UIView时,要获得当前的cell。

      实现的方法:将这个UIView控件作为cell的属性,通过取父视图的方式来获得这个cell。

      CustomCell *cell = [[customView superView] superView];

      用这个方法取cell在iOS7系统下会出问题,程序会崩溃。

      因为,customView的父视图,在iOS7系统下是UITableViewCellScrollView,而不是UITableViewContentView。即,如果在iOS7系统下,要使用三个superView才能获得这个自定义的cell,在其他系统下,只需要通过2个superView来获取到cell。

      UITableViewCellScrollView是在iOS7系统下,属于UITableViewContentView的第一级子视图。

      出现问题的地方:在开发表视图UITableView的时候,并且UITableViewCell为自定义,其中包含有多个嵌套的子控件,当在代码中,根据自定义cell中的子控件进行响应操作的时候,取父视图cell时容易遇到

      出现问题的类:UITableViewCellScrollView

      出现问题的系统(在我的测试机中是iOS7.1.2):iOS7

      避免出现问题的方法:改变取父视图的方法,或者使用自定义cell中的空间的代理来进行空间的响应操作

      因为放假时间仓促,所以没有时间画个图或者写个demo展示一下,文字说明应该是说清楚了,如有不懂,可以提问,希望对大家有帮助。

  • 相关阅读:
    树莓派4B 多屏 QT程序窗口全屏 QScreen 只能获取1个屏幕
    树莓派4B 微雪7寸触摸屏 双屏 触摸屏校正
    虚拟机 ubuntu18 树莓派4 QT5.14.2 交叉编译
    Qt 指定 so库 运行时路径
    building qtqml requires python
    python django 测试报告 发送邮件
    jmeter XPath Extractor
    python+unittest+HTMLTestRunner生成测试报告
    Genymotion、 uiautomatorviewer、 appium报错
    jmeter forEach控制器
  • 原文地址:https://www.cnblogs.com/xingxingLove/p/5183071.html
Copyright © 2020-2023  润新知