在iOS 7中有新的滑动到弹出手势:您在屏幕左侧从左向右滑动,UINavigationController弹出回到之前的UIViewController .
当我创建这样的自定义后退按钮时,滑动到弹出手势不再起作用:
UIBarButtonItem *customBackButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:self action:@selector(navigateBack)];
[customBackButton setBackButtonBackgroundImage:barBackBtnImg forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[customBackButton setBackButtonBackgroundImage:barBackBtnImgHighlighted forBarMetrics:UIBarMetricsDefault];
self.navigationItem.backBarButtonItem = customBackButton;
如何使用自定义后退按钮并使用原生滑动来弹出手势?
Update:
那个's what'发生在navigateBack中:
- (void)navigateBack {
[self.navigationController popViewControllerAnimated:YES];
}
7 回答
我用
只需添加以下代码行:
您可以添加自己的UIGestureRecognizer并自行弹出UIViewController . 有关详细信息,请参阅docs .
无需添加自己的手势识别器 . UINavigationController已经为您完成了 . 在启用interactivePopGestureRecognizer之前,您需要为其设置委托 .
做以下两件事:
为避免崩溃,您必须小心添加和删除自定义后退选择器的方式 . 原因是当您按下弹出控制器时导航控制器会保持不变 . 如上所述,在添加自定义后退按钮选择器后,您应该在viewDidApear中执行以下操作 .
然后在viewWillDisapear中做
这些电话的时间安排是关键 . 您可能会遇到崩溃,请参阅here中有关原因的详细信息
有一个新的手势识别器
UIScreenEdgePanGestureRecognizer
. 您可以将它添加到视图中并分别处理(调用navigateBack
),复制视图控制器导航行为 .你在“navigateBack”中做了什么?
使用这样的方法:
尝试将此添加到自定义后退按钮self.navigationController.interactivePopGestureRecognizer.delegate =(id)self;