iOS 记录近期遇到的几个bug

1. actionSheet与pickerView 不兼容

发生环境:ios 9以上,其他无测试。

actionSheet与pickerView在一起使用时,当actionSheet弹出后,紧接着再弹出pickerView, 则会出现pickerView虽然显示但无法响应事件的情况,这时候pickerView就如同幽灵一样,遮挡了后面的view,后面的view同样可以接收事件。

奇怪的是:1、如果不是像刚刚描述的这种顺序操作。当actionSheet弹出后,在弹出pickerView之前有textfield的操作,则pickerView正常。

               2、当设置为自动登录时,偏好设置保存登录tokenId,则上述bug只发生一次。发生这个bug后退出程序,以后启动和使用,这个bug都不出现了。

 

解决方案:

经过分析,这个问题的出现应该是苹果内部的bug,从而引发了一些莫名奇妙的问题,我的解决方案就是把actionSheet 更新为 UIAlertController。

  

 

2. tableviewCell 设置行高为0却无法隐藏

发生环境:ios 9以上。其他无测试。

同样如上图所展示,tableview中的cell当在heightForRowAtIndexPath方法中设置为0 时,当所设置的cell的索引值是最后连续的几个(包括1个),则达到预期隐藏cell的效果,否则无法彻底隐藏该cell,虽然行高是0,但cell存在部分残影,相当于显示到了未隐藏的原本位于下方的cell里了。

为什么我要这样去隐藏cell呢?有时候为了代码复用和简洁,需要使用子类,重写父类的相关方法。

尝试解决的方案:

1、通过indexPathForCell方法拿到cell,遍历cell的子控件并删除,发现无济于事。

2、动态删除某行cell,发现效果不理想。

解决方法:

在子类中重写cellforrow...方法,拦截需要隐藏的cell,并返回一个空的cell,这时候再调用heightForRowAtIndexPath返回0,达到预期效果。

 

posted on 2017-10-19 14:46  imsz5460  阅读(244)  评论(0编辑  收藏  举报