iOS7之后苹果就添加了边缘侧滑返回这个功能,对于苹果软件的操作体验有很好的提升,但是这种操作在有些地方会被系统屏蔽掉,如在一个viewController中添加了scrollView或者tableView的时候。由于这些控件里面都有ScrollView,边缘侧滑返回的时候会首先触发ScrollView滚动而失效,导致侧滑手势失效,但是大部分时候我们并不需要ScrollView的横向滚动,所以这个时候有边缘侧滑返回就会很好的提升用户体验要解决这个问题只需要在ViewDidload中添加以下代码:
if([self.navigationControllerrespondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate =self;
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
此方法可以使在webView和ScrollView中的侧滑失效问题得以解决,恢复iOS系统的侧滑返回操作;优化操作体验;但是回到navigationController的最顶层的Controller的时候再次侧滑之后,点击某个要push页面的地方,就会造成软件假死,怎么划都没用。解决办法:回到navigationController最上层页面的时候实现以下方法:
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
即在最上层页面不侧滑返回的时候把的话返回手势关闭掉即可解决这个假死问题,
网友评论
博主所写的是一个比较表面的解决方法,原理是让响应者变成navigationcontroller而不是scrollView,其实根据业务需求有许多其他方法解决。