转载自: http://m.blog.csdn.net/blog/u014223290/38686079
ios7中增加了两个新功能
1,点击statusBar,返回列表顶部
2,右滑返回上一级界面
以上两个功能在xcode5中创建的工程是默认开启的,若不生效,则需要review一下自己的代码。
这两个功能需要改动的地方不多
1,
// When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate does not return NO from `shouldScrollViewScrollToTop`, and it is not already at the top. // On iPhone, we execute this gesture only if there's one on-screen scroll view with `scrollsToTop` == YES. If more than one is found, none will be scrolled. @property(nonatomic) BOOL scrollsToTop; // default is YES.以上注释的意思是将tableView的scrollsToTop属性设置为YES.同时
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;方法返回YES.
若同一时刻有两个scrollView的scrollsToTop属性都为YES,则系统不知道要响应哪一个。此功能就会失效。
解决方法是找到所有的tableView和scrollView,将不需要此功能的对象scrollsToTop属性设置为NO.
注意查找那些会一直存在的界面,比如侧边栏。(我也是找了好久才发现项目侧边栏里有一个scrollView)
2,右滑返回
如果自定义了leftBarButtonItem为返回功能时,右滑返回失效。应该设置backBarButtonItem为返回功能。关于leftBarButtonItem和backBarButtonItem的区别,可以去查找资料
解决方法:
<pre name="code" class="objc"> // 如果要自定义返回按钮,需设置以下两个 iOS7 新增的属性 [[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:DDImageName(@"leftBack")]]; [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:DDImageName(@"leftBack")]]; // 位移隐藏掉文字 [UIBarButtonItem.appearance setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -64) forBarMetrics:UIBarMetricsDefault]; UIButton* button = [Pub backButtonWithTarget:self action:@selector(onleftBarClick:) imgName:DDImageName(@"leftBack")]; self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; // self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];//使用此行代码时右滑返回失效 self.navigationController.navigationBar.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:DDImageName(@"leftBack")]];//将自定义按钮颜色改为图片的颜色,若不设置,则默认是蓝色的
按照以上代码,可以自定义返回按钮。同时保持右滑返回功能。