项目中遇到的坑

2019-01-08  本文已影响8人  woniu

一、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;
上一篇下一篇

猜你喜欢

热点阅读