美文网首页
项目中遇到的坑

项目中遇到的坑

作者: woniu | 来源:发表于2019-01-08 16:21 被阅读8次

    一、JSONModel-服务器返回的数据中有id,description等关键字

    问题:description方法是NSObject自带的方法,包括类方法和对象方法,系统的id关键字,有时我们的参数会和这些参数混淆,导致使用参数出错。
    解决:为了不和系统的关键字和方法混淆的问题,我们需要替换参数。在model中的.m文件中添加:

    + (JSONKeyMapper *)keyMapper{
        return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{@"classDesc":@"description"}];
    }
    

    二、页面无法左滑

    问题:开发中发现push后的页面无法实现左滑返回上一页,WTF?这不是苹果自带的功能吗,而且我也没有禁止页面左滑,到底为什么?
    解决:在自定义的导航栏中自定义backButton之后,左滑失效。自定义导航栏中我们使用下面几个方法解决。

        self.navigationController.interactivePopGestureRecognizer.enabled = YES ;
        self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
    

    我们只需要用到gestureRecognizerShouldBegin这个方法就能判断是否允许开始这个手势了。

    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    {
        return YES ;
    }
    

    设置完成后,运行代码,左滑正常。

    三、自定义弹框

    页面抖动:

     CAKeyframeAnimation *animation = [[CAKeyframeAnimation alloc] init];
    //        [animation setDelegate:self];
            animation.delegate = self;
            animation.values = @[@(M_PI/64),@(-M_PI/64),@(M_PI/64),@(0)];
            animation.duration = 0.25;
            [animation setKeyPath:@"transform.rotation"];
            animation.removedOnCompletion = NO;
            animation.fillMode = kCAFillModeForwards;
            [self.whiteView.layer addAnimation:animation forKey:@"shake"];
    

    动画移除视图:

      [UIView animateWithDuration:0.25 animations:^{
            [self.whiteView setFrame:CGRectMake((Screen_Width-300)/2, Screen_Height, 300, 200)];
        } completion:^(BOOL finished) {
            [self.backView removeFromSuperview];
            [self removeFromSuperview];
    
        }];
    

    知识点:
    1、init时会触发- (void)layoutSubviews方法,那么在初始化的时候可以直接在此处设置UI。

    四、tabbar跳转问题

    方法一: 使用这种方法会导致返回原页面,页面会重新刷新。     
    
        CustomTabBarViewController *tabbarVC = [[CustomTabBarViewController alloc]init];
    
        AppDelegate *appdelegateE = (AppDelegate*)[UIApplication sharedApplication].delegate;
        //跳转到第二个tabbarItem
        tabbarVC.selectedIndex = 1;
        appdelegateE.window.rootViewController = tabbarVC;
    
    方法二: 下面的方法就不会有这个问题咯,害的我想了各种方法避免上面的问题,还没有结果。     
    
     self.tabBarController.selectedIndex = 1;
    

    相关文章

      网友评论

          本文标题:项目中遇到的坑

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