在iOS11以下时通过在项目中使用过tableview 的侧滑删除功能,实现tableview的三个代理方法就可以了。
但是在iOS11以后,发现项目中的tableview在实现侧滑删除功能上存在点击没反应的情况,当时查询了iOS11的UIkit更新,以及查询了网上各种内容的却没有发现相似的情况。于是单独写了一个demo进行观察,发现在该demo中不存在项目的问题。
排除系统问题后确定问题根源出在项目工程内,开始排查tableview实现方法,代理。最后发现问题的根源是runtime机制。
当时项目需求,使用runtime为uibutton写了一个分类,参考了网上的源码,实现了使用runtime消除Uibutton的重复点击机制(该代码 百度搜索一下有很多)。问题就出在这里:
该runtime机制下,通过断点发现点击侧滑删除按钮后程序进入
在iOS 10 和iOS 11下面通过断点发现两者执行的是同样的代码步骤,但是在iOS10以下点击侧滑删除有效而点击iOS11下的侧滑删除就导致无效,有碰到一样问题的大佬可以帮忙解释以下原理吗?谢谢哈
之前忘记更新了,目前该问题已经解决。
原因在于defaultinterval的值问题,跟runtime的写法有关系,不需要注销runtime,只要将这个defaultinterval的值修改为0即可完美解决这个bug。