美文网首页iOS开发实用技术iOS开发技术
工作中一些`别致`bug的解决方式

工作中一些`别致`bug的解决方式

作者: flowerflower | 来源:发表于2017-09-12 09:16 被阅读45次

    一.关于选中不选中问题的处理方式

    需求:默认选择第一个,其次单机那个选择那个
    1.首先在Model层使用BOOL声明一个变量是来记录是否选中

    //标记是否是被选中
    @property (nonatomic, assign) BOOL selectedFlag;
    

    2.在获取数据之后默认选择第一个

    [[self.giftBagDataArr firstObject] setSelectedFlag:YES]; //默认选中第一个
    
    

    3.在didSelectItemAtIndexPath方法中遍历数据

        for (LYNoticeModel *model in self.giftBagDataArr) {
            
            model.selectedFlag = NO;
        }
        if (self.giftBagDataArr.count <= 0) return;
        LYNoticeModel *noticeModel = self.giftBagDataArr[indexPath.row];
        noticeModel.selectedFlag = YES;
    

    4.在cell中的操作如下:

    - (void)setModel:(LYNoticeModel *)model{
      if(!model)return;
        _model = model;
        self.nameLabel.text = model.title;
        if (model.selectedFlag) {
            [self selectedCell];
        }else{
            [self unselectedCell];
        }
    }
    - (UIBezierPath*)path{
        if (!_path){
            _path = [UIBezierPath bezierPathWithRoundedRect:self.background.bounds cornerRadius:2];
        }
        return _path;
    }
    //单元格是选中状态
    - (void)selectedCell{
        self.background.layer.shadowColor = kColorMainRed.CGColor;
        self.background.layer.shadowPath = self.path.CGPath;
        self.background.layer.shadowOpacity = 1;
    }
    //单元格不是选中状态
    - (void)unselectedCell{
        self.background.layer.shadowOpacity = 0;
    }
    - (void)initUI{
        self.background = [[UIView alloc]init];
        [self addSubview:self.background];
       ...//初始化其他UI控件
    }
    

    二.关于collection选中与选中问题,其中最后一个是输入框

    需求:默认选择第一个,其次单机那个选择那个,重点在于最后输入框的选中
    可能出现的问题

    • 按照上面的方法做,填葫芦画瓢的方式。只有点击最后一个cell才会选择,但是不会弹出键盘
    • 当点击最后一个输入框,可能最后一个不被选择,但是可以弹出键盘

    三.关于一个奇葩键盘弹起中的一个奇葩问题

    起因:来自于禅道上提出bug

    Snip20170522_4.png
    经过:首先对于这个bug,我拿自己手机6s测的时候没没有出现类似问题,然后同事拿自己这个5s就出现了这个问题,但是奇葩的是,有一个界面跟这个是公用的,但是那边却能弹出键盘。同事看了许久同时也检查了代码,木有发现问题,于是叫我看一下,我同样的去检查了下代码,答案是一样的。在此之前键盘是可以弹出出来的,后来测试妹子说很难点着,同事就稍微将那个_inputTextF的高度改了下。但是千想万想没有想到是这里的错,另一个界面的公用的却能弹,最后还是使用Beyond Compare对比工具才试出来的。对于这个奇葩的bug,得好好记住,省的下次再犯。 Snip20170519_1.png

    四.关于使用SDWebImagView中其中又有gif的图的处理方式

    参考之前写的文章

    五.cookie莫名为空了

    此次两台测试机在蒲公英拉下来的包都没有数据,在此之前打的包都是有数据的,于是在看我们的自己的手机是有数据的,所以说明不是后台挂了,于是乎就拿测试机跑到我们手机上,发现cookie为空,自己找了好久的问题,终究没有想明白为啥会空,之前都是好好的,怎么要到快上线的时候出现这么奇葩的问题,结果换了一个Wifi,神奇的事情出现了,数据有了。接着拿另一台手机换了个Wift也有了数据,但是这个神奇又奇葩的问题,我到现在还是一种懵逼的状态

    七.键盘如果是手写键盘则会出现灰色一条大概高为40的框框

    详情参考,类似这种效果。
    经过:
    出现的问题:

    1234.gif 12345.gif

    解决方式:
    让子公司的同事去掉了那几行代码,重新打了个静态库过来就好了。

    八.高度frame始终有问题,打印看高度又是正常的

    由于游戏划账和兑换乐盈券是动态获取的,故我的界面的数据并不是死数据,高度也是随着后台的返回来判断是否显示。切换TabBar的时候,第一次高度不对,再切换一次就正常了。
    如图:

    Snip20170629_7.png
    一句代码搞定(用xib做的,故在awakeFromNib添加下面那行代码即可)
    - (void)awakeFromNib{
        [super awakeFromNib];
        self.autoresizingMask = UIViewAutoresizingNone;
    }
    

    九.在iPhone5显示不正常,在iPhone6显示正常

    Snip20170629_9.png
    解决方式:
    -(void)setFrame:(CGRect)frame{
        //空出我的页面中间的的菜单栏
        frame.origin.y += 40;
        
        frame.size.height += 1 * 40;
        
        frame.origin.x = 0;
        frame.size.width = LYScreen_Width;
        
        [super setFrame:frame ];
    }
    
    

    相关文章

      网友评论

        本文标题:工作中一些`别致`bug的解决方式

        本文链接:https://www.haomeiwen.com/subject/ytjyxxtx.html