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,达到预期效果。